欧拉函数模板
Posted Go
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了欧拉函数模板相关的知识,希望对你有一定的参考价值。
欧拉函数定义f(n)定义为1-n之间与n互素的数 的个数,即f(n)=n*(1-1/p1)...(1-1/pn)
代码如下:
//欧拉函数 int Euler(int n){ int m=sqrt(n+0.5); int ans=n; for(int i=2;i<=m;i++){ if(n%i==0){ ans=ans/i*(i-1); while(n%i==0){ n/=i; } } } if(n>1){ ans=ans/n*(n-1); } return ans; } //欧拉函数打表 int euler[maxn]; void Euler(int n){ for(int i=2;i<=n;i++){ euler[i]=0; } euler[1]=1; for(int i=2;i<=n;i++){ if(!euler[i]){ for(int j=i;j<=n;j+=i){ if(!euler[j]){ euler[j]=j; } euler[j]=euler[j]/i*(i-1); } } } }
以上是关于欧拉函数模板的主要内容,如果未能解决你的问题,请参考以下文章