//基于欧拉公式对欧拉函数代码进行优化
#include <stdio.h>
int main()
{
int ans,n;
scanf("%d",&n);
ans=n;
for(int i=2;i*i<=n;i++)//查找
{
if(n%i==0)
{
ans*=(i-1.0)/i;//定义公式
while(n%i==0) n/=i*1.0;//找出n的因数中与i互质的最大因数
}
}
if(n>1) ans*=(n-1)*1.0/n;//补充for循环中漏掉的质因数
printf("%d",ans);
return 0;
}
欧拉函数优化,今日份学习



京公网安备 11010502036488号