Unverified Commit c2b19db0 authored by mgt/Enter-tainer's avatar mgt/Enter-tainer Committed by GitHub
Browse files

Merge pull request #2670 from kZime/patch-2

parents e7f4fdad 72f6b72d
Loading
Loading
Loading
Loading
+26 −21
Original line number Diff line number Diff line
## 欧拉函数的定义

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

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

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

利用唯一分解定理,我们可以把一个整数唯一地分解为质数幂次的乘积,

设 $n = \prod_{i=1}^{n}p_i^{k_i}$ ,其中 $p_i$ 是质数,那么 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}$ 

#### 证明:

引理(1):设 $x=p^k$ , 那么 $\varphi(x)=p^{k-1}\times(p-1)$ 

证明:

容易发现 $x\perp y (y\bmod p \ne 0)$ 。我们试着将 $x$ 划分为长度为 $p$ 的 $\dfrac{p^k}{p}=p^{k-1}$ 段,每一段都有 $p-1$ 个数与 $x$ 互质。所以与 $x$ 互质的数个数即为: $p^{k-1}\times(p-1)$ 

接下来我们证明 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}$ 

$$
\because n=\prod_{i=1}^{n} p_i^{k_i} \\ 	\begin{aligned}\therefore \varphi(x) &= \prod_{i=1}^{n} \varphi(p_i^{k_i}) \\&= \prod_{i=1}^{n} (p_i-1)\times {p_i}^{k_i-1}\\&=\prod_{i=1}^{n} {p_i}^{k_i} \times(1 - \frac{1}{p_i})\\&=x~ \prod_{i=1}^{n} (1- \frac{1}{p_i})\end{aligned}
$$

## 欧拉函数的一些性质

-   欧拉函数是积性函数。
@@ -30,19 +14,40 @@ $$

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

-    $n = \sum_{d \mid n}{\varphi(d)}$ 
-    $n = \sum_{d \mid n}{\varphi(d)}$ 

    利用 [莫比乌斯反演](./mobius.md) 相关知识可以得出。

    也可以这样考虑:如果 $\gcd(k, n) = d$ ,那么 $\gcd(\frac{k}{d},\frac{n}{d}) = 1$ 。$k < n$
    也可以这样考虑:如果 $\gcd(k, n) = d$ ,那么 $\gcd(\dfrac{k}{d},\dfrac{n}{d}) = 1, ( k < n )$ 。

    如果我们设 $f(x)$ 表示 $\gcd(k, n) = x$ 的数的个数,那么 $n = \sum_{i = 1}^n{f(i)}$ 。

    根据上面的证明,我们发现, $f(x) = \varphi(\frac{n}{x})$ ,从而 $n = \sum_{d \mid n}\varphi(\frac{n}{d})$ 。注意到约数 $d$ 和 $\frac{n}{d}$ 具有对称性,所以上式化为 $n = \sum_{d \mid n}\varphi(d)$ 。
    根据上面的证明,我们发现, $f(x) = \varphi(\dfrac{n}{x})$ ,从而 $n = \sum_{d \mid n}\varphi(\dfrac{n}{d})$ 。注意到约数 $d$ 和 $\dfrac{n}{d}$ 具有对称性,所以上式化为 $n = \sum_{d \mid n}\varphi(d)$ 。

-   若 $n = p^k$ ,其中 $p$ 是质数,那么 $\varphi(n) = p^k - p^{k - 1}$ 。
    (根据定义可知)


-   由唯一分解定理,设 $n = \prod_{i=1}^{n}p_i^{k_i}$ ,其中 $p_i$ 是质数,有 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}$ 。

    证明:

    -   引理:设 $p$ 为任意质数,那么 $\varphi(p^k)=p^{k-1}\times(p-1)$ 。

        证明:显然对于从 1 到 $p^k$ 的所有数中,除了 $p^{k-1}$ 个 $p$ 的倍数以外其它数都与 $p^k$ 互素,故 $\varphi(p^k)=p^k-p^{k-1}=p^{k-1}\times(p-1)$ ,证毕。

    接下来我们证明 $\varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}}$ 。由唯一分解定理与 $\varphi(x)$ 函数的积性

$$
\begin{aligned}
	\varphi(n) &= \prod_{i=1}^{s} \varphi(p_i^{k_i}) \\
	&= \prod_{i=1}^{s} (p_i-1)\times {p_i}^{k_i-1}\\
	&=\prod_{i=1}^{s} {p_i}^{k_i} \times(1 - \frac{1}{p_i})\\
	&=n~ \prod_{i=1}^{s} (1- \frac{1}{p_i})
	&\square
\end{aligned}
$$

## 如何求欧拉函数值

如果只要求一个数的欧拉函数值,那么直接根据定义质因数分解的同时求就好了。这个过程可以用*Pollard Rho*算法优化。