欧拉函数&欧拉定理 学习笔记

欧拉函数

\(φ(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1]\)

性质:

  • \(\forall\ n=p^k,φ(n)=p^k-p^{k-1}\)
    (若 \(n\) 为质数,\(φ(n)=n-1\) )
    证明:对于每个不满足 \(\gcd(m,n)=1\)\(m\) 都可以写成 \(m=s\times p\) 的形式
    \(p\le s\times p\le p^k→1\le s\le p^{k-1}\)
    那么不满足的数的个数只有 \(p^{k-1}\)\(φ(n)=p^k-p^{k-1}\) 得证

  • \(φ\) 是积性函数:对于任意 \(n,m\) 满足 \(\gcd(n,m)=1\) ,都有 \(φ(nm)=φ(n)\times φ(m)\)

  • 我们知道:

\[\ n=\prod\limits_{i=1}^{k}p_i^{c_i} \]

那么就有:

\[\ φ(n)=n\prod\limits_{i=1}^k(1-\dfrac{1}{p_i}) \]

证明:
由性质2得:

\[φ(n)=\prod\limits_{i=1}^kφ(p_i^{c_i}) \]

由性质1得:

\[φ(n)=\prod\limits_{i=1}^k(p_i^{c_i}-p_i^{{c_i}-1}) \]

\[φ(n)=\prod\limits_{i=1}^kp_i^{c_i}(1-\dfrac{1}{p_i}) \]

\[φ(n)=n\prod\limits_{i=1}^k(1-\dfrac{1}{p_i}) \]

欧拉函数求法

由性质3可以得到 \(φ(n)=n\prod\limits_{i=1}^k(\dfrac{p_i-1}{p_i})\quad\) \(φ(n)=\prod\limits_{i=1}^kp_i^{c_i-1}(p_i-1)\)

那么我们可以在 \(O(\sqrt n)\) 的复杂度内求出一个数的欧拉函数:
写法1

int phi(int n){
    int ans=n,num=1;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i)continue;
        ans=ans/i*(i-1);
        while(!(n%i))n/=i;
    }
    if(n^1) ans=ans/n*(n-1);
    return ans;
}

写法2

int phi(int n){
    int ans=1,num=1;
    for(int i=2;i*i<=n;i++)
    {
        if(n%i)continue;
        num=i-1,n/=i;
        while(!(n%i)) num=num*i,n/=i;
        ans=num*ans;
    }
    if(n^1) ans=ans*(n-1);
    return ans;
}

两种写法分别对应两个柿子

知周所众,积性函数都可以线性筛出来

那么对于 \(φ\) 来说 分以下两种情况( \(p_j\) 为质数):

  • \(p_j\nmid i\) 此时满足 \(\gcd(p_j,i)=1\) ,有 \(φ(p_j\times i)=φ(p_j)\times φ(i)\)
  • \(p_j\mid i\) 考虑性质3: \(\forall\ n\in\mathbb{N},\ φ(n)=n\prod\limits_{i=1}^k(1-\dfrac{1}{p_i})\)
    发现它对后面没有贡献 那么乘进去维护前面的 \(n\) 即可 \(φ(p_j\times i)=p_j\times φ(i)\)

对于没被筛到的 \(i\) 一定为质数 那么 \(φ(i)=i-1\)

void init(int n){
    phi[1]=1;
    for(int i=2;i<=n;i++){
        if(!vis[i])p[++cnt]=i,phi[i]=i-1;
        for(int j=1;j<=cnt&&i*p[j]<=n;j++){
            vis[i*p[j]]=1;
            if(!(i%p[j])){
                phi[i*p[j]]=phi[i]*p[j];
                break;
            }
            phi[i*p[j]]=phi[i]*phi[p[j]];
        }
    }
}

欧拉定理

对于满足 \(\gcd(a,m)=1\)\(a,m\) 都有

\[a^{φ(m)}\equiv1\pmod m \]

(对于费马小定理 \(a^{p-1}\equiv1\pmod p\) 实际上为欧拉定理 \(m\) 为质数的特殊情况)

可用于对指数取模:\(a^b\equiv a^{b\bmod φ(m)}\pmod m\)

如果 \(\gcd(a,m)\not=1\) 怎么办捏?看下面!

扩展欧拉定理

对于满足 \(b\ge φ(m)\)\(a,b,m\) 都有

\[a^b\equiv a^{b\bmod φ(m)+φ(m)}\pmod m \]

所以有:

\[a^b\equiv\begin{cases}a^b&b<φ(m)\\a^{b\bmod φ(m)+φ(m)}&b\ge φ(m)\end{cases} \]

posted @ 2023-11-02 18:30  xiang_xiang  阅读(12)  评论(0编辑  收藏  举报