传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1787
解题思路:
这也是一个简单的欧拉函数。
实现代码;
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int Euler(long long n){ long long res=n; for(int i=2;i*i<=n;i++){ if(n%i==0){ res=res/i*(i-1); while(n%i==0) n/=i; } } if(n>1) res=res/n*(n-1); return res; } int main(){ long long n; while(cin>>n){ if(n==0) break; cout<<n-Euler(n)-1<<endl; } return 0; }