欧拉定理详解

 

 

 

最后附上欧拉函数的求解过程 

 1 int Eualr(int n)
 2 {
 3     int ans=n;
 4     for(i=2;i*i<=n;i++){ //枚举所有质因数
 5         if(n%i==0){
 6             ans=ans/i*(i-1);
 7             while(n%i==0) n/=i;
 8         }
 9     }
10     if(n>1) ans-=ans/n; 
11     return ans;
12 }
View Code

 以及预处理 [1,n] 范围内的欧拉函数

 1 int eular[N];
 2 void get_eular()
 3 {
 4     for(int i=0;i<N;i++) eular[i]=i;
 5     for(int i=2;i<N;i++){
 6         if(eular[i]==i){
 7             for(int j=i;j<N;j+=i){
 8                 eular[j]=eular[j]/i*(i-1);
 9             }
10         }
11     }
12 }
View Code
posted @ 2021-05-18 17:00  Bcoi  阅读(332)  评论(0)    收藏  举报