//基于欧拉公式对欧拉函数代码进行优化 #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; }
欧拉函数优化,今日份学习