数学 欧拉函数相关

Posted wangxiaodai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数学 欧拉函数相关相关的知识,希望对你有一定的参考价值。

欧拉函数相关

1,(phi(i))表示在1到i的数中与i互质的数的个数。

2,(O(sqrt{n}))(phi)

? 算数基本定理:
[ phi(i)=i*(p_1-1)/p_1*(p_2-1)/p_2*……*(p_k-1)/p_k ]
? 枚举质因数套公式即可:

? code:

int phi(int x){
    int re=x;
    for(int i=2;i*i<=x;i++){
        if(x%i==0){
            re=re/i*(i-1);
            while(x%i==0)x/=i;
        }
    }
    if(x>1)re=re/x*(x-1);
    return re;
}

3,线性筛欧拉函数

? 1,如果当前数是质数,易知:
[ phi(i)=i-1 ]
? 2,如果当前数取模枚举的质数不等于零,则:
[ phi(i*prime[j])=phi(i)*phi(prime[j]) ]
? 3,如果当前数取模枚举的质数等于零,则:
[ phi(i*prime[j])=phi(i)*prime[j] ]
开始愉快地写代码:

void Euler_phi(){
    memset(isprime,1,sizeof isprime);
    phi[1]=1; 
    for(int i=2;i<=n;i++){
        if(isprime[i]){
            phi[i]=i-1; prime[++tot]=i;
        }
        for(int j=1;j<=tot&&i*prime[j]<=n;j++){
            isprime[i*prime[j]]=0;
            if(i%prime[j]!=0){
                phi[i*prime[j]]=phi[i]*phi[prime[j]];
            }
            else{
                phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
        }
    }
}

以上是关于数学 欧拉函数相关的主要内容,如果未能解决你的问题,请参考以下文章

数学之欧拉函数 &几道poj欧拉题

欧拉函数BZOJ2190-[SDOI2012]longge的数学问题

学习:数学----欧拉定理与扩展欧拉定理

模板数学欧拉函数

BZOJ4173数学 欧拉函数神题

bzoj4173数学(欧拉函数)