hdu 1787 欧拉函数
没说的 欧拉函数
#include<iostream> #include<cmath> using namespace std; int euler(int x) { int i,res=x; for(i=2;i<(int)sqrt(x*1.0)+1;i++) if(x%i==0) { res=res/i*(i-1); while(x%i==0) x/=i; } if(x>1) res=res/x*(x-1); return res; } int main() { int n; while(scanf("%d",&n)!=EOF) { if(n==0) break; int x=euler(n); printf("%d\n",n-x-1); } return 0; }