C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのフェルマーの最終定理


数論におけるフェルマーの最終定理は、フェルマー予想としても知られています。 は、電力nが2より大きいことを示す定理です。a、b、cの3つの値が-

を満たすことはありません。

a n + b n =c n

つまり、 n <=2の場合、 a n + b n =c n

それ以外の場合、 a n + b n !=c n

n=2の値の例

3、4、5 => 3 2 + 4 2 =9 + 16 =25 =5 2

5、12、13 => 25 + 49 =169 =13 2

この問題では、L、R、範囲[L、R]を表すpow、および電力の3つの値が与えられます。私たちの仕事は、与えられた範囲とパワーに対するフェルマーの最終定理を検証することです。

問題を理解するために例を見てみましょう

例1:

入力: L =4、R =12、電力=2

出力: 5、12、13

例2:

入力: L =4、R =12、電力=4

出力: そのような値は見つかりませんでした

ソリューションアプローチ:

ここでは、電力が2より大きいかどうかを確認します。それより大きい場合は、そのような値は見つかりませんでした。

それ以外の場合は、条件a n を満たす値があるかどうか、制限をチェックインします。 + b n =c n

ソリューションの動作を説明するプログラム

#include <iostream>
#include <math.h>
using namespace std;

void checkFermatsLastTh(int L, int R, int n) {

   if (n >= 3)
   cout<<"No example found!";
   else {
      for (int a = L; a <= R; a++)
      for (int b=a; b<=R; b++)
      {
         int sum = pow(a, n) + pow(b, n);
         double c = pow(sum, 1.0/n);
         int cpowN = pow((int)c, n);
         if (cpowN == sum)
      {
         cout<<"Example found with value : "<<a<<", "<<b<<", "<<c;
         return;
      }
   }
   
   cout << "No example found!";
   }
}

int main() {
   
   int L = 3, R = 15, power = 2;
   cout<<"Run 1 \n";
   checkFermatsLastTh(L, R, power);
   
   L = 5, R = 42; power = 5;
   cout<<"\n\nRun 2\n";
   checkFermatsLastTh(L, R, power);

   return 0;
}

出力-

Run 1
Example found with value : 3, 4, 5
Run 2
No example found!

  1. オイラーの定理を実装するC++プログラム

    これは、オイラーの定理の実装を示すC++プログラムです。モジュラ逆数が存在するためには、数とモジュラが互いに素でなければなりません。 アルゴリズム Begin Take input to find modular multiplicative inverse Take input as modular value Perform inverse array function: modInverse(x + 1, 0); modInverse[1] = 1; for i = 2 to x modInverse[i] = (-(y / i) * mo

  2. フェルマーの素数性テストを実行するC++プログラム

    フェルマーの素数性テストは、与えられた数が素数であるかどうかをチェックするために実行されます。これがこのアルゴリズムのC++コードです。 アルゴリズム Begin    modulo(base, e, mod)    a = 1    b = base    while (e > 0)       if (e mod 2 == 1)          a = (a * b) % mod       &