#include <cstdio>
#include <cstring>
#include <cmath>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=1000;
int e[maxn];
int euler_phi(int n)
{
int m=(int)sqrt(n+0.5);
int ans=n,i;
for(i=2;i<=m;i++)
{
if(n%i==0)
{
ans=ans/i*(i-1);
while(n%i==0)n/=i;
}
}
if(n>1)ans=ans/n*(n-1);
return ans;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0)break;
cout<<n-1-euler_phi(n)<<endl;
}
return 0;
}
/*
欧拉函数euler_phi(n),求得不大于n且与n互质的正整数个数
*/
hdu 1787 GCD Again 欧拉函数
最新推荐文章于 2020-06-12 17:34:27 发布