#include<stdio.h>
int Eular(int n)
{
int i;
int ans=n;
for(i=2;i*i<=n;++i)
{
if(n%i==0) //如果i和n不互质,i的倍数全都与n不互质
{
ans-=ans/i; //排除掉i的倍数
while(n%i==0)
n=n/i; //去掉n中含有的所有i因子
if(n==1) // n=1 所有因子排除完毕
break;
}
}
if(n!=1) //n!=1 此时的n为素数
ans-=ans/n;
return ans;
}
main()
{
int m;
while(scanf("%d",&m)!=EOF)
printf("%d\n",Eular(m));
}
欧拉函数
最新推荐文章于 2024-02-02 19:58:49 发布