正在连接内容文件

附录10 - 欧拉函数

一、定义

『欧拉函数 φ(n)\varphi(n)』:正整数 nn 的欧拉函数 φ(n)\varphi(n) 定义为,1⋯n1\cdots n 中和 nn 互素的整数的个数。

二、欧拉函数的积性

欧拉函数有一个很好的性质

如果两个正整数 mm 和 nn 互素(gcd⁡(m,n)=1\gcd(m, n) = 1),那么它们乘积的欧拉函数,等于它们各自欧拉函数的乘积:
φ(m⋅n)=φ(m)φ(n)\varphi(m \cdot n) = \varphi(m)\varphi(n)

证明积性(方法一)

为了严谨证明,我们把 11 到 m⋅nm \cdot n 这 mnmn 个数排成一个 nn 行 mm 列的矩阵:

12…k…mm+1m+2…m+k…2m2m+12m+2…2m+k…3m⋮⋮⋱⋮⋱⋮(n−1)m+1(n−1)m+2…(n−1)m+k…nm\begin{matrix} 1 & 2 & \dots & k & \dots & m \\ m+1 & m+2 & \dots & m+k & \dots & 2m \\ 2m+1 & 2m+2 & \dots & 2m+k & \dots & 3m \\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \\ (n-1)m+1 & (n-1)m+2 & \dots & (n-1)m+k & \dots & nm \end{matrix}

我们要在这个矩阵里找:有多少个数同时与 mm 和 nn 互素?(因为与 mnmn 互素,等价于既与 mm 互素,又与 nn 互素)。

  1. 纵向看(筛选与 mm 互素的数):
    观察第 kk 列的数,它们的统一形式是 j⋅m+kj \cdot m + k(其中 jj 是行号减一)。
    根据带余除法和求最大公约数的性质(辗转相除法):
    gcd⁡(j⋅m+k,m)=gcd⁡(k,m)\gcd(j \cdot m + k, m) = \gcd(k, m)
    这意味着:同一列的数,与 mm 的最大公约数全都是一样的,完全由表头的 kk 决定。所以,如果 kk 与 mm 互素,这一整列的数都与 mm 互素;如果 kk 与 mm 不互素,这一整列全都报废。因为表头是从 11 到 mm,其中与 mm 互素的数有 φ(m)\varphi(m) 个。所以,只有 φ(m)\varphi(m) 列幸存下来。

  2. 纵列内看(筛选与 nn 互素的数):
    现在我们随便挑出幸存的某一列(假设是第 kk 列)。这一列的数是:
    k,m+k,2m+k,…,(n−1)m+kk, m+k, 2m+k, \dots, (n-1)m+k
    这里有一个极其重要的数论事实:因为 gcd⁡(m,n)=1\gcd(m, n) = 1,这 nn 个数除以 nn 的余数,恰好是
    0,1,2,…,n−10, 1, 2, \dots, n-1 的一个完整排列(只是顺序打乱了)。
    (严谨证明:假设有两个数同余,即 j1m+k≡j2m+k(modn)j_1 m + k \equiv j_2 m + k \pmod n,则 (j1−j2)m(j_1 - j_2)m 能被 nn 整除。因为 mm 和 nn 互素,所以 nn 必须整除 (j1−j2)(j_1 - j_2)。但 j1j_1 和 j2j_2 都小于 nn,所以它们只能相等。这证明了没有两个数余数相同,必定覆盖所有余数。)
    既然这一列数除以 nn 的余数构成了 00 到 n−1n-1 的完整排列,那么根据欧拉函数的定义,这一列中恰好有 φ(n)\varphi(n) 个数与 nn 互素。

  3. 总结:
    我们有 φ(m)\varphi(m) 个合格的列,每一列里又有 φ(n)\varphi(n) 个合格的数。所以,总共既与 mm 互素又与 nn 互素的数字个数为:φ(m⋅n)=φ(m)φ(n)\varphi(m \cdot n) = \varphi(m)\varphi(n)

证明积性(方法二)

核心思路:构造集合的双射
我们要证明,当 gcd⁡(m,n)=1\gcd(m, n) = 1 时,φ(m⋅n)=φ(m)φ(n)\varphi(m \cdot n) = \varphi(m)\varphi(n)。
这在代数上等价于证明:与 mnmn 互素的数的集合,和“与 mm 互素的数的集合”及“与 nn 互素的数的集合”的笛卡尔积,元素个数完全相等。

我们定义三个集合:
UmnU_{mn}:11 到 mnmn 中与 mnmn 互素的整数集合(其元素个数为 φ(mn)\varphi(mn))。
UmU_m:11 到 mm 中与 mm 互素的整数集合(其元素个数为 φ(m)\varphi(m))。
UnU_n:11 到 nn 中与 nn 互素的整数集合(其元素个数为 φ(n)\varphi(n))。
我们的目标是构造一个从 UmnU_{mn} 到 Um×UnU_m \times U_n 的映射 ff,并证明它是双射。

第一步:定义映射(从整体到局部)
对于任意 x∈Umnx \in U_{mn},我们定义映射 ff 为分别对 mm 和 nn 取模:
f(x)=(x mod m,x mod n)f(x) = (x \bmod m, x \bmod n)
这个映射合法吗?因为 xx 与 mnmn 互素,所以 xx 必然既与 mm 互素,又与 nn 互素。根据欧几里得引理的除法性质,gcd⁡(x mod m,m)=gcd⁡(x,m)=1\gcd(x \bmod m, m) = \gcd(x, m) = 1。因此,x mod m∈Umx \bmod m \in U_m 且 x mod n∈Unx \bmod n \in U_n。映射 ff 确实把 UmnU_{mn} 里的元素准确地送到了 Um×UnU_m \times U_n 中。

第二步:利用裴蜀定理证明双射(从局部回推整体)
要证明它是双射,我们只需证明:对于任意给定的数对 (a,b)∈Um×Un(a, b) \in U_m \times U_n,在 UmnU_{mn} 中都存在且仅存在一个 xx,使得 x≡a(modm)x \equiv a \pmod m 且 x≡b(modn)x \equiv b \pmod n。
这时候裴蜀定理闪亮登场!因为 gcd⁡(m,n)=1\gcd(m, n) = 1,根据裴蜀定理,必然存在整数 uu 和 vv,使得:
mu+nv=1mu + nv = 1
我们直接用 uu 和 vv 像拼积木一样“拼”出这个目标 xx。令:
x=(a⋅nv+b⋅mu) mod mnx = (a \cdot nv + b \cdot mu) \bmod mn

  1. 验证 xx 满足条件:
    模 mm 看:因为 nv=1−munv = 1 - mu,所以 x≡a(1−mu)+0≡a(modm)x \equiv a(1 - mu) + 0 \equiv a \pmod m。
    模 nn 看:因为 mu=1−nvmu = 1 - nv,所以 x≡0+b(1−nv)≡b(modn)x \equiv 0 + b(1 - nv) \equiv b \pmod n。
    这证明了 xx 的存在性。

  2. 验证 xx 确实在 UmnU_{mn} 中(即 xx 与 mnmn 互素):
    假设有素数 pp 同时整除 xx 和 mnmn。因为 mm 和 nn 互素,pp 只能整除 mm 或 nn 中的一个。不妨设 p∣mp \mid m。
    既然 p∣mp \mid m,而 x≡a(modm)x \equiv a \pmod m,这就意味着 (x−a)(x - a) 是 mm 的倍数,于是 p∣(x−a)p \mid (x - a),再加上 p∣xp \mid x,所以 pp 也必定整除 aa。但这不可能!因为 a∈Uma \in U_m,它与 mm 是互素的,不可能有 pp 这个公因子。产生矛盾,说明 xx 必然与 mnmn 互素,x∈Umnx \in U_{mn}。

  3. 验证唯一性:
    如果在 11 到 mnmn 之间还有另一个数 yy 也满足 y≡a(modm)y \equiv a \pmod m 且 y≡b(modn)y \equiv b \pmod n。那么 x−yx - y 既能被 mm 整除,也能被 nn 整除。因为 mm 和 nn 互素,所以 x−yx - y 必须能被 mnmn 整除。但在 11 到 mnmn 的范围内,两个不同的数之差的绝对值必定小于 mnmn,所以它们只能相等(x=yx = y)。

结论:通过裴蜀定理,我们完美证明了 UmnU_{mn} 和 Um×UnU_m \times U_n 之间存在严密的一一对应关系(双射)。既然两个集合可以完美配对,它们的元素个数就必然完全相等。因此:
φ(mn)=φ(m)⋅φ(n)\varphi(mn) = \varphi(m) \cdot \varphi(n)

  • 注:上面证明中的第二步里,构造 x=(a⋅nv+b⋅mu) mod mnx = (a \cdot nv + b \cdot mu) \bmod mn 的方法,实际是借用了「中国剩余定理」中的构造方式,具体可以参考「附录11」。

三、欧拉函数的因数和性质

『欧拉函数的因数和性质』:对于任意正整数 nn,有 ∑d∣nφ(d)=n\sum_{d \mid n} \varphi(d) = n。(即 nn 的所有因数的欧拉函数之和等于 nn)

证明:
写出 nn 个分数:1n,2n,…,nn\frac{1}{n}, \frac{2}{n}, \dots, \frac{n}{n}。
将它们全部分解为最简分数。约分后,分母 dd 必定是 nn 的某个因数,且分子 kk 与 dd 互素。
对于每一个固定的因数 dd,以 dd 为分母的最简分数有几个?显然,分子 kk 必须满足 1≤k≤d1 \le k \le d 且 gcd⁡(k,d)=1\gcd(k, d) = 1,这样的 kk 恰好有 φ(d)\varphi(d) 个。
因为所有最简分数加起来总共还是最初的 nn 个分数,所以所有 φ(d)\varphi(d) 的总和等于 nn。证明完毕。

四、欧拉函数的展开

借助于欧拉函数的积性,我们可以将 φ(n)\varphi(n) 展开为更具体的表达式:

根据算术基本定理,任何正整数 nn 都可以唯一分解为素数幂的乘积。我们设:

n=p1a1p2a2…pmamn = p_1^{a_1} p_2^{a_2} \dots p_m^{a_m}

那么欧拉函数可以展开为:

φ(n)=p1a1−1(p1−1)p2a2−1(p2−1)…pmam−1(pm−1)\varphi(n) = p_1^{a_1-1}(p_1 - 1) p_2^{a_2-1}(p_2 - 1) \dots p_m^{a_m-1}(p_m - 1)

证明展开公式:

第一步:计算单一素数幂的欧拉函数 φ(pa)\varphi(p^a)
我们先不看复杂的 nn,只看 nn 是一个素数的幂次的情况,即 n=pan = p^a(pp 为素数,a≥1a \ge 1)。
欧拉函数 φ(pa)\varphi(p^a) 的定义是:在 11 到 pap^a 的正整数中,有多少个数与 pap^a 互素?
正难则反,我们可以用排除法:

  1. 11 到 pap^a 之间总共有 pap^a 个数。
  2. 因为 pp 是素数,一个数如果与 pap^a 不互素,那么它必定含有因子 pp,也就是说,它必定是 pp 的倍数。
  3. 在 11 到 pap^a 中,pp 的倍数有哪些呢?
    有:1⋅p,2⋅p,3⋅p,…,(pa−1)⋅p1 \cdot p, 2 \cdot p, 3 \cdot p, \dots, (p^{a-1}) \cdot p。
    很显然,这样的数总共有 pa−1p^{a-1} 个。我们把这些“不互素”的数从总数里踢出去,剩下的就是互素的数:
    φ(pa)=pa−pa−1=pa−1(p−1)\varphi(p^a) = p^a - p^{a-1} = p^{a-1}(p - 1)

这也就是展开公式里那些 piai−1(pi−1)p_i^{a_i-1}(p_i - 1) 碎片的来源。

第二步:拼装最终公式
有了第一步(素数幂的求法)和欧拉函数的积性公式 φ(mn)=φ(m)⋅φ(n)\varphi(mn) = \varphi(m) \cdot \varphi(n),就可以得到最终的展开式了。
把任意正整数 nn 分解为不同素数幂的乘积:

n=p1a1p2a2…pmamn = p_1^{a_1} p_2^{a_2} \dots p_m^{a_m}

因为底数是不同的素数,所以这些素数幂之间两两互素(即 gcd⁡(piai,pjaj)=1\gcd(p_i^{a_i}, p_j^{a_j}) = 1)。我们连续使用“积性”公式拆开它们:

φ(n)=φ(p1a1)⋅φ(p2a2)…φ(pmam)\varphi(n) = \varphi(p_1^{a_1}) \cdot \varphi(p_2^{a_2}) \dots \varphi(p_m^{a_m})

最后,把第一步得到的单一素数幂公式 φ(pa)=pa−1(p−1)\varphi(p^a) = p^{a-1}(p - 1) 代入上面每一个括号里,就得到了最终的展开公式:

φ(n)=p1a1−1(p1−1)p2a2−1(p2−1)…pmam−1(pm−1)\varphi(n) = p_1^{a_1-1}(p_1 - 1) p_2^{a_2-1}(p_2 - 1) \dots p_m^{a_m-1}(p_m - 1)