5欧拉函数

欧拉函数

定义

欧拉函数(Euler's totient function),即 \(\varphi(n)\),表示的是小于等于 n 和 n 互质的数的个数。

比如说 \(\varphi(1) = 1\)

当 n 是质数的时候,显然有$ \varphi(n) = n - 1$。

性质

  • 欧拉函数是积性函数

对于任意的\(gcd(a,b)=1\)的整数a和b,有\(\varphi(ab)=\varphi(a)\varphi(b)\)

特别地,当 n 是奇数时 \(\varphi(2n) = \varphi(n)\)

  • \(n = \sum_{d \mid n}{\varphi(d)}\)
  • 若$ n = p^k\(,其中 p 是质数,那么\) \varphi(n) = p^k - p^{k - 1}$。
  • 由唯一分解定理,设 \(n = \prod_{i=1}^{s}p_i^{k_i}\),其中 p_i 是质数,有 \(\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}\)
  • 对任意不全为 0 的整数 m,n,\(\varphi(mn)\varphi(\gcd(m,n))=\varphi(m)\varphi(n)\gcd(m,n)\)。可由上一条直接计算得出。

实现

int euler_phi(int n)
{
    int ans = n;
    for(int i = 2; i * i <= n; i++)
    {
        if(n % i == 0)
        {
            ans = ans/i*(i-1);
            while(n % i == 0) n/=i;
        }
    }
    if(n > 1) ans = ans / n * ( n -1);
    return ans;
}
posted @ 2025-07-18 20:08  星空丶star  阅读(46)  评论(0)    收藏  举报