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!
广告