欧拉函数【模板】

来源:互联网 发布:朝鲜怎样知乎 编辑:程序博客网 时间:2024/05/16 10:32

欧拉函数:欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1)。

直接求欧拉函数:

int euler(int n){ //返回euler(n)        int res=n,a=n;       for(int i=2;i*i<=a;i++){           if(a%i==0){               res=res/i*(i-1);//先进行除法是为了防止中间数据的溢出                while(a%i==0) a/=i;           }       }       if(a>1) res=res/a*(a-1);       return res;  }


筛法求欧拉函数:

void Init(){     euler[1]=1;     for(int i=2;i<Max;i++)       euler[i]=i;     for(int i=2;i<Max;i++)        if(euler[i]==i)           for(int j=i;j<Max;j+=i)              euler[j]=euler[j]/i*(i-1);//先进行除法是为了防止中间数据的溢出}




原创粉丝点击