1. 程式人生 > >費馬定理&歐拉定理

費馬定理&歐拉定理

。。 因數 證明 其中 return 一個 ios 質數 並且

費馬定理:

ap≡a(mod p)

其中p為質數,且a不是p的倍數

證明:

。。。。。

歐拉定理:

aφ(p)≡1(mod p)

φ(x)(歐拉函數)為小於等於x且與x互質的數的個數

φ(x)=∏(pi-1)*piki-1 其中pi表示 x的質因數,ki表示這種質因數的個數

特別的對於質數 φ(x)=x-1。

歐拉函數的代碼實現:

 1 #include<cstdio>
 2 #include<Iostream>
 3 using namespace std;
 4
int ol(int x) 5 { 6 int ans=1; 7 for(int i=2;i*i<=x;++i) 8 { 9 if(x%i==0) 10 { 11 x/=i; 12 ans*=i-1; 13 } 14 while(x%i==0) 15 { 16 x/=i; 17 ans*=i; 18 } 19 }
20 if(x>1) ans*=x-1; 21 return ans; 22 } 23 int main() 24 { 25 int a; 26 scanf("%d",&a); 27 printf("%d",ol(a)); 28 return 0; 29 }

最後函數裏那個如果x>1,ans*=x-1一開始讓我很懵,後來一想,如果這個數將所有的質因數除過一遍之後,剩下的數如果不是1,那麽剩下的肯定只有一個並且是個質數(證明很顯然)

費馬定理&歐拉定理