欧拉定理详解







最后附上欧拉函数的求解过程
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 }
以及预处理 [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 }

浙公网安备 33010602011771号