C++ 中的费马小定理
费马小定理 −
此定理指出,对于任何质数 p,
Ap - p 是 p 的倍数。
此陈述在模运算中表示为:
ap ≡ a (mod p)
如果 a 不能被 p 整除,则
ap - 1 ≡ 1 (mod p)
在这个问题中,给出了两个数字 a 和 p。我们的任务是验证这些值上的费马小定理。
我们需要检查ap ≡ a (mod p),或ap - 1 ≡ 1 (mod p)
对于给定的 a 和 p 值成立。
来举个例子来理解这个问题,
输入: a = 3,p = 7
输出: True
解释:
Ap-1 ≡ 1 (mod p)
=> 36 ≡ 729
=> 729 - 1 = 728
=> 728 / 7 = 104
说明此定理的工作原理的程序,
范例
#include <iostream> #include <math.h> using namespace std; int fermatLittle(int a, int p) { int powVal; if(a % p == 0){ powVal = pow(a, p); if((powVal - p) % p == 0){ cout<<"Fermat's little theorem holds true!"; } else{ cout<<"Fermat's little theorem holds false!"; } } else { powVal = pow(a, (p - 1)); if((powVal - 1) % p == 0 ){ cout<<"Fermat's little theorem holds true!"; } else{ cout<<"Fermat's little theorem holds false!"; } } } int main() { int a = 3, m = 11; fermatLittle(a, m); return 0; }
输出 −
Fermat's little theorem holds true!
广告