Gracekite's Homepage

Back

定义#

欧拉函数(Euler’s totient function),定义为中与互质的数的个数。
欧拉定理:

性质#

  1. 要求与互质;

  2. 设,那么
    ;

  3. 质数;
    互质;
    质数是的因子;

  4. 欧拉函数是积性函数:
    若,则

  5. 设为的一个质因子,为的次数,则有成立

    • 证明:设,那么

计算#

  1. 一种基于质因数分解求欧拉函数的算法(求单个)
    int phi(int x){
        int ret = x;
        int t=sqrt(x);
        for(int i =2;i<=t;i++){
            if(x%i==0){
                while(x%i==0)x/=i;
                ret = ret / i * (i - 1);
            }
        }
        if(x>1) ret=ret/x*(x-1);
        return ret;
    }
    cpp
  2. 线性筛欧拉函数

应用#

用欧拉定理求逆元:;
特别的,若为质数:
快速幂即可

int powermod(int a, int b, int n){
    int ret = 1;
    while(b){
        if(b & 1) ret=(long long)ret*a%n;
        a=(long long)a*a%n;
        b>>=1;
    }
    return ret;
}
cpp
欧拉定理&欧拉函数
https://betteroier.github.io/blog/%E6%AC%A7%E6%8B%89%E5%AE%9A%E7%90%86-%E6%AC%A7%E6%8B%89%E5%87%BD%E6%95%B0
Author Yuxuan Zheng
Published at August 22, 2022