欧拉函数简单总结

1. 定义: 欧拉函数 Φ(X) 为小于等于X且与X互质的数的个数

2. 重要性质

○1.Φ(p)=p-1 (p是质数).
○2.Φ(x)为积性函数 即 Φ(p*q)=Φ(p)×Φ(q) 其中 p,q互质 .
○3.Φ(pk)=(p-1)×(pk-1) (p是质数).
○4.当p为质数且p|x时,Φ(x*p)=Φ(x)*p.
○5.设n是一个正整数, d | n Φ ( d ) = n
○6.设 1 <= k <= n ,那么有 ( k , n ) = 1 = 1 2 n Φ ( n )
○7.若a与n互质,那么若 a n b ( m o d p ) a n m o d Φ ( p ) b ( m o d p ) (由欧拉定理易得)

性质3的证明:
∵pk 仅含有 p 这一个质因子故小于 pk的不与之互质的数仅有p的倍数,共有(pk/p)=pk-1
即Φ(pk)=pk-pk-1=pk-1×(p-1) 即证

性质4的证明:
∵p|x 令P为x的质因子集合(1-1/P)=(1-1/p1)×…×(1-1/pn)
∴Φ(x)=x*(1-1/P) Φ(p)=p-1
∴Φ(x*p)=(x*p)(1-1/P) (引入p后质因子集合不变 ∵p是x的质因子)
∴Φ(x)=x*(1-1/P)*p=Φ(x)*p, 即证


3. 求法 :

通项公式:

Φ ( X ) = X Π ( 1 1 p i ) p x

证明如下:

预备知识:
1. Φ(p)=p-1 (p是质数).
2. 唯一分解定理: X=(p1k1 × p2k2….×pnkn) 其中p为X的质因子.
3. Φ(x)为积性函数 即 Φ(p*q)=Φ(p)×Φ(q) 其中 p,q互质 .
4. Φ(pk)=(p-1)×(pk-1)

证明:
Φ(X)=Φ(p1k1 × p2k2….×pnkn)其中p为X的质因子
∵X的质因子的任何次方都互质
∴Φ(X)=Φ(p1k1) × Φ(p2k2)×….×Φ(pnkn)
而Φ(pk)=(p-1)×(pk-1)

∴Φ(X)=(p1-1) ×(p2-1)×….×(pn-1)(p1k1-1 ×p2k2-1….×pnkn-1)

每项提出一个pi即得 Φ(X)=X*Π(1-1/pi)

4. 公式法和线性递推法求解欧拉函数
1. O ( n ) 公式法

inline int phi(int x)
{
    if(x==1) return 1;
    int res=x;
    for(register int i=2;i<=sqrt(x);i++){
        if(x%i==0){
            res-=res/i;
            while(x%i==0) x/=i;
        }
    }
    if(x!=1) res-=res/x;//最后一个也要算;
    return res;
}

2. O ( n ) 递推法

for(int i=2;i<=n;i++){
        if(!vis[i]) {prime[++tot]=i;phi[i]=i-1;}
        for(int j=1;j<=tot;j++){
            if(1ll*i*prime[j]>n) break;
            vis[i*prime[j]]=1;
            if(i%prime[j]==0) {
                phi[i*prime[j]]=phi[i]*prime[j];
//当 prime[j]是i的约数时,phi[i*prime[j]]=phi[i]*prime[j];
                break;
            }
            phi[i*prime[j]]=phi[i]*(phi[prime[j]]);
//否则,phi[i*prime[j]]=phi[i]*phi[j] =phi[i]*(prime[j]-1);
        }
    }

简单例题

例1.luogu-P2158 [SDOI2008]仪仗队 题解

例2. luogu-P2303 Longge的问题 题解

例3.HDU-2588 GCD 题解

猜你喜欢

转载自blog.csdn.net/element_hero/article/details/79326782