1 int Eular(int n) 2 { 3 int ans=1,i; 4 for(i=2;i<n;i++) 5 {if(n%i==0) 6 {n/=i; 7 ans*=(i-1); 8 while(n%i==0) 9 {n/=i; 10 ans*=i; 11 12 } 13 14 } 15 16 } 17 if(n>1) ans*=(n-1); 18 return ans; 19 }
也就是求小于或等于n的互质数的个数
1 int Eular(int n) 2 { 3 int ans=1,i; 4 for(i=2;i<n;i++) 5 {if(n%i==0) 6 {n/=i; 7 ans*=(i-1); 8 while(n%i==0) 9 {n/=i; 10 ans*=i; 11 12 } 13 14 } 15 16 } 17 if(n>1) ans*=(n-1); 18 return ans; 19 }
也就是求小于或等于n的互质数的个数