模板:欧拉函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板:欧拉函数相关的知识,希望对你有一定的参考价值。
1 //直接求解欧拉函数 2 int Euler(int n){ 3 int res=n,a=n; 4 for(int i=2;i*i<=a;i++){ 5 if(a%i==0){ 6 res=res/i*(i-1); 7 while(a%i==0) a/=i; 8 } 9 } 10 if(a>1) res=res/a*(a-1); 11 return res; 12 } 13 14 //筛法求解欧拉函数 15 void Euler(){ 16 phi[1]=1; 17 for(int i=2;i<N;i++) phi[i]=i; 18 for(int i=2;i<N;i++){ 19 if(phi[i]==i){ 20 for(int j=i;j<N;j+=i) phi[j]=phi[j]/i*(i-1); 21 } 22 } 23 }
以上是关于模板:欧拉函数的主要内容,如果未能解决你的问题,请参考以下文章