欧拉函数(模板)
欧拉函数:
设oula(i)为i对应的欧拉函数值,那么oula(i)=i*(1-1/p1)*(1-1/p2)*(1-1/p3)*……*(1-1/pn)(这是定理,我们也不需要去推导了。。大师推出来的结果比我们准确得多,会用就行)
其中,p1,p2,p3,……,pn为i的素因子,就是将i素因子分解之后得到的所有因子。
那么,得出代码:
int oula(int n) { int ans=n; for(int i=2;i*i<=n;i++) { if(n%i==0) { ans=ans-ans/i; while(n%i==0) n/=i; } } if(n>1) ans=ans-ans/n; return ans; }
持续更新博客地址:
blog.csdn.net/martinue