映射法推导欧拉函数等式 φ(uv) = φ(u)φ(v) 的两次尝试过程:一次失败,一次成功
对给定的正整数 n,欧拉函数 φ(n) 定义为满足 1 ≤ k ≤ n 和 gcd(k, n) = 1 的正整数 k 的个数,这里 gcd(k, n) = 1 表示 k 和 n 的最大公约数为 1,即 k 和 n 互素。
由定义易知,φ(n) 对应一个有限集合,记为 S(n) = {k | 1 ≤ k ≤ n, gcd(k, n) = 1, k ∈ N},φ(n) 便是这个集合的元素的总个数。一个有限集合 S 的元素总个数,简记为 size(S)。
n = 1 的情形,由定义显然有 φ(1) = 1.
考虑 n = pm 的情形,这里 p 是素数,m 是正整数,在 1 到 pm 中,能被 p 整除的数有 p、2p、...、pm-1p,共计 pm-1 个,于是有:
φ(n) = pm - pm-1 = pm(1 - 1/p) = n(1 - 1/p)。
考虑 n = uv 的情形,这里 u 和 v 均为正整数,且满足 gcd(u, v) = 1,此时会有:
φ(uv) = φ(u)φ(v) ①
当 u = 1 或 v = 1 时,① 显然成立。
下面用映射的方法来证明 ① 在 u > 1、v > 1 的情形下同样成立。
(I). 对任意一个满足 1 ≤ k ≤ uv 的正整数 k,存在唯一的正整数对 (s,t),满足 1 ≤ s ≤ u,1 ≤ t ≤ v,以及 (s - 1)v + t = k. 事实上,s = [(k - 1) / v] + 1,t = (k mod v) + 1,这里 k mod v 指代 k 被 v 除后的最小非负余数。
(II). 反过来,对任意一个满足 1 ≤ s ≤ u,1 ≤ t ≤ v 的正整数对 (s,t),存在唯一的正整数 k,满足 k = (s - 1)v + t。
用 【n】来表示集合 {1, 2, ..., n},综合 (I) 和 (II) ,实际上给出了如下一个双射(一一映射):
β: 【u】×【v】→【uv】
对应的函数表达式为:
β(s, t) = (s - 1)v + t,1 ≤ s ≤ u,1 ≤ t ≤ v,s, t ∈ N.
这个双射甚至不要求 gcd(u, v) = 1,比如 u = 2,v = 4 的情形有:
β(1,1) = 1,β(1,2) = 2,β(1,3) = 3,β(1,4) = 4,
β(2,1) = 5,β(2,2) = 6,β(2,3) = 7,β(2,4) = 8.
用 ψ(n) 表示集合【n】的元素个数,由定义有 ψ(n) = n,显然有:
ψ(uv) = ψ(u)ψ(v) ②
① 和 ② 有着一样的形式,② 是非常直观的,映射 β 的定义域中的全体数对可以排成如下所示的矩阵形式:
(1,1) (1,2) ... (1,v) (2,1) (2,2) ... (2,v) ... 〖A〗 (u,1) (u,2) ... (u,v)
即 n 个数正好可以排成 u 行 v 列,显然有 n = uv.
而 ① 却不是那么直观。
考虑 u、v 互素且 u > 1、v > 1 的情形。假设 v 有 r 个非 1 因数,按从小到大分别记为 v1、v2、...、vr,显然有 vr = v. 由欧拉函数的定义易知 φ(v) = v - r. 同样,假设 u 有 q 个非 1 因数,按从小到大分别记为 u1、u2、...、uq,显然有 uq = u 以及 φ(u) = u - q.
尝试一:
现在对 β 的定义域和值域做如下对等的裁剪处理:
逐个考察【u】×【v】中的数对 (s,t),若 gcd(t, v) ≠ 1,则从【u】×【v】中去掉 (s,t),相应地,把 (s,t) 在 β 上的映像 (s - 1)v + t 从值域【uv】中去掉。
在完成上述的裁剪处理后,实际上得到了一个新的双射,记为:
η(s, t) = (s - 1)v + t,1 ≤ s ≤ u,1 ≤ t ≤ v 且 t ≠ vi, i=1,2,...,r
映射 η 的定义域的全体数对可以排成如下矩阵形式:
(1,1) ... (1,v1) ... (1,vr-1) ... (1,v) (2,1) ... (2,v1) ... (2,vr-1) ... (2,v) ... (u,1) ... (u,v1) ... (u,vr-1) ... (u,v)
标黄的列为裁剪掉的列,一共为 r 列,裁剪后的矩阵中总元素个数为 u(v - r) = uφ(v).
考察任意一个被裁剪掉的数对 (s, vi), i=1,...,r,这个数对在 β 上的映像为 k = (s - 1)v + vi,显然 gcd(k, uv) = vi > 1,即 k 不属于 S(uv).
上述的裁剪处理得到的新双射,函数表达式并没有变,只是定义域从【u】×【v】缩减为【u】× S(v),相应地,【uv】中所有满足 gcd(k, v) ≠ 1 的 k 都已经排除在新的值域 Y 之外,即有:
η: 【u】× S(v) → Y
η(s, t) = (s - 1)v + t,1 ≤ s ≤ u,1 ≤ t ≤ v 且 t ≠ vi, i=1,2,...,r
综上易知有,size(Y) = size(【u】× S(v)) = uφ(v).
因为 u > 1,由定义易知 u 不属于 S(u),即有 φ(u) < ψ(u) = u,于是
size(Y) = uφ(v) > φ(u)φ(v)
下一步考虑对双射 η 做某种处理得到一个新的双射 ρ,使其定义域缩减为 S(u) × S(v),而值域相应缩减为 S(uv),① 的证明便告完成。
双射 η 的定义中,定义域中有 uφ(v) 个正整数对 (s,t),对应地,值域中有 uφ(v) 个正整数 k。
考虑如下的双射:
θ: 【u】× S(v) → Z
θ(t, s) = (t - 1)u + s,1 ≤ s ≤ u,1 ≤ t ≤ v 且 t ≠ vi, i=1,2,...,r
这里 (s,t) 的含义做了改变,但这会引发问题。以 u = 5,v = 6 为例对照 η(s, t) 和 θ(t, s) 说明一下:
此时 r = 4,v1 = 2,v2 = 3,v3 = 4,v4 = 6
η(1, 1) = 1,η(2, 1) = 7,η(3, 1) = 13,η(4, 1) = 19,η(5, 1) = 25,
η(1, 5) = 5,η(2, 5) = 11,η(3, 5) = 17,η(4, 5) = 23,η(5, 5) = 29
Y = {1, 5, 7, 11, 13, 17, 19, 23, 25, 29}
标黄的两项含有因数 5,待进一步做裁剪处理。
θ(1, 1) = 1,θ(5, 1) = 21,
θ(1, 2) = 2,θ(5, 2) = 22,
θ(1, 3) = 3,θ(5, 3) = 23,
θ(1, 4) = 4,θ(5, 4) = 24,
θ(1, 5) = 5,θ(5, 5) = 25
Z = {1, 2, 3, 4, 5, 21, 22, 23, 24, 25}
虽然,θ 的像集(即 Z)里正好也有两项含有因数 5,但是 Z ≠ Y.
至此,尝试一宣告失败。
尝试二:
(尝试一虽然失败了,但为尝试二提供了思路)
由上述矩阵〖A〗可知,【uv】中满足 gcd(k, v) ≠ 1 的正整数 k 有 ur 个,这 ur 个正整数的集合记为 S1;由对称性,【uv】中满足 gcd(k, u) ≠ 1 的正整数 k 有 vq 个,这 vq 个正整数的集合记为 S2.
u 有 q 个非 1 因数,v 有 r 个非 1 因数,且 gcd(u,v) = 1,即 u 和 v 没有共同的非 1 因数,因此【uv】中有 qr 个元素同属于 S1 和 S2,于是
φ(uv) = uv - ur - vq + qr = (u - q)(v - r) = φ(u)φ(v).
附言:
欧拉函数等式 φ(uv) = φ(u)φ(v) 的映射法证明是在冯承天所著的《从一元一次方程到伽罗瓦理论》里看到的,如下图所示:
因表述过于简略,遂有上面的两次推导尝试。
在 https://cp-algorithms.com/algebra/phi-function.html 上看到一个利用中国剩余定理的证明,如下: