C++ 中的费马小定理


费马小定理 −

此定理指出,对于任何质数 p

          Ap - p 是 p 的倍数。

此陈述在模运算中表示为:        

          a ≡ a (mod p)

如果 a 不能被 p 整除,则

 ap - 1 ≡ 1 (mod p)

在这个问题中,给出了两个数字 a 和 p。我们的任务是验证这些值上的费马小定理

我们需要检查a ≡ a (mod p),或ap - 1 ≡ 1 (mod p)

对于给定的 a 和 p 值成立。

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

输入: a = 3,p = 7

输出: True

解释: 

Ap-1  ≡ 1 (mod p)

=> 3≡ 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!

更新于: 22-01-2021

671 次浏览量

开启您的职业生涯

完成课程获取认证

开始学习
广告