题意:求1-n内与n互质的数的个数
code:
#include<iostream> #include<cstdio> #include<cstdlib> int phi[10000]; int main() { int n,i,cnt,j,s; while(scanf("%d",&n)!=EOF) { cnt=0;s=n; for(i=2;i*i<=n;i++) //求质因数 { if(n%i==0) { phi[cnt++]=i; while(n%i==0) n/=i; } } if(n>1) phi[cnt++]=n; for(i=0;i<cnt;i++) { s=s/phi[i]*(phi[i]-1); } printf("%d\n",s); } } /* phi(x) = (p1-1)/p1*(p2-1)/p2....*(pn-1)/pn * x */