这题求gcd(m,n)>1的个数,用N-1-e(n)就行了
#include<stdio.h>
#include<math.h>
#define maxn 100000010
int euler(int x)//求 一个数的欧拉函数,安装定义求
{
int i,res=x;
for(i=2;i<(int)sqrt(x*1.0)+1;i++)
{
if(x%i==0)//从2开始,2是质数
{
res=res/i*(i-1);
while(x%i==0)//把是2的因子都去掉
x/=i;
}
}
if(x>1)//最后一定是个大质数
res=res/x*(x-1);
return res;
}
int main()
{
int n;
while(scanf("%d",&n)==1&&n)
{
printf("%d\n",n-1-euler(n));
}
return 0;
}