C++ 中的费马大定理
数论中的费马大定理又称费马猜想 ,是一个定理,内容为对于大于 2 的 n 次幂。不存在三个值 a、b、c 满足 −
an + bn = cn
即 如果 n <= 2, an + bn = cn
否则, an + bn != 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!
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP