C++ 中的费马大定理


数论中的费马大定理又称费马猜想 ,是一个定理,内容为对于大于 2 的 n 次幂。不存在三个值 a、b、c 满足 −

          a+ b= cn

     如果 n <= 2,              an + b= cn 

          否则,  an + b!= cn

n = 2 的值示例, 

3、4、5 => 32 + 42 = 9 + 16 = 25 = 52。 

5, 12, 13 => 25 + 49 = 169 = 132.

在这个问题中,我们给定三个值,L、R、pow,表示范围 [L, R] 和幂。我们的任务是验证给定范围和幂的费马大定理。

我们举个例子来理解这个问题,

示例 1: 

输入: L = 4,R = 12,幂 = 2

输出: 5, 12, 13

示例 2: 

输入: L = 4,R = 12,幂 = 4

输出: 未找到此类值

解决方案方法: 

在此,我们将检查幂是否大于 2。如果大于,则打印未找到此类值。  

否则,在限制条件内检查是否有值满足条件 an + bn = cn

说明我们解决方案工作原理的程序,

示例

现场演示

#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!

更新于: 2021 年 1 月 22 日

170 次浏览

开启您的 职业生涯

完成课程获得认证

开始
广告