标签:
总数减去欧拉函数,再减去因数的数量,再加上被多减了一次的1,就是答案。
1 /*by SilverN*/ 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace std; 8 int n,m; 9 int solve(int x){ 10 int res=x;//欧拉函数 11 int cnt=1;//因数 12 for(int i=2;i*i<n;i++){ 13 if(x%i)continue; 14 res=res/i*(i-1); 15 int c=0; 16 while(x%i==0){ 17 x/=i; 18 c++; 19 } 20 cnt*=c+1; 21 } 22 if(x>1){ 23 cnt*=2; 24 res=res/x*(x-1); 25 } 26 return res+cnt; 27 } 28 int main(){ 29 scanf("%d",&n); 30 solve(n); 31 printf("%d\n",n-solve(n)+1); 32 return 0; 33 }
标签:
原文地址:http://www.cnblogs.com/SilverNebula/p/5918252.html