感觉自己弱爆了,做做SGU吧。。。
#include<iostream> #include<cmath> //欧拉函数 using namespace std; int euler(int n) { int m=n; int ans=n; for(int i=2;i<=sqrt(n*1.0);i++) //注意等于号, { if(m%i==0) { ans=ans*(i-1)*1.0/i; while(m%i==0)m/=i; } } if(m!=1)ans=ans*(m-1)/m; return ans; } int main() { int n; while(cin>>n) { cout<<euler(n)<<endl; } }