About 欧拉反演

  • 定义:欧拉函数 $\varphi(x)$ 是小于等于 $x$ 的数中与 $x$ 互质的数的数目。

常用性质:

  1. 若 $x$ 为质数,那么 $\varphi(x) = x - 1$。
  2. 如果 $x = 2n$ ($n$ 为奇数),$\varphi(x) = \varphi(n)$,即 $\varphi(2n) = \varphi(n)$ ($n$ 为奇数)。
  3. 若 $p$ 为质数,则 $\varphi(p^k) = p^k - p^{k - 1}$。
  4. 当 $x > 2$ 时, $\varphi(x)$ 为偶数,即 $\gcd(n, x) = \gcd(n, n - x)$。
  5. 小于 $n$ 的数中,与 $n$ 互质的数的总和为 $\varphi(n) * \frac{n}{2}(n > 1)$ 。
  6. $n = \sum_{d|n} \varphi(d)$,即 $n$ 的因数(包括1与自己)的欧拉函数之和为 $n$。这条有叫 欧拉反演

欧拉反演的证明如下:

$$\because \varphi(n) = \sum_{i = 1}^{n}[\gcd(i, n) = 1]$$

$$\therefore \sum_{d|n} \varphi(d) = \sum_{d|n} \sum_{i = 1}^{n}[\gcd(i, n) = d]$$

$$\sum_{d|n} \sum_{i = 1}^{n}[\gcd(i, n) =d] = \sum_{d|n} \sum_{i = 1}^{\frac{n}{d}}[\gcd(i, \frac{n}{d}) = 1]$$

为什么这一步可以这样化简呢,你同时把 $i, n$ 除以 $d$,就变成了 $\frac{i}{d}$ 和 $\frac{n}{d}$,但是你 $i$ 是拿去枚举的,所以只是 $i$ 的枚举范围变了。

$$\sum_{d|n} \sum_{i = 1}^{\frac{n}{d}}[\gcd(i, \frac{n}{d}) = 1] = \sum_{d|n} \varphi(\frac{n}{d})$$

$$\sum_{d|n} \varphi(\frac{n}{d}) = \sum_{d|n} \varphi(n)$$

因为你 $d$ 是整除 $n$ 的,并且一个数的因数是两两对应的,所以 $\varphi(\frac{n}{d})(d|n) = \varphi(n)$。

形象一点理解就是这样:

for (int i = 1; i * i <= n; i ++ )
{
    if (n % i == 0)
    {
        i and n / i are factors of n.
    }
}
posted @ 2023-11-28 07:52  emo_male_god  阅读(55)  评论(0)    收藏  举报  来源