欧拉函数啊,这东西看着挺玄乎,实际上就那点事。大家平时做题,算 $phi(n)$ 的时候,脑子里往往得蹦出一堆“互质”、“最大公约数”之类的词儿,搞得整段子像背考场范文一样干巴巴的。
实际上呢,它说白了就是数论里一个挺可爱的数学游戏,就是问:1 到 $n$ 这堆数字里,有多少个跟 $n$ 互质的家伙?这就好比你找一组人,条件是“不能和 $n$ 分文钱讲理”,问一共剩几个。 得整明白互质这事儿才能入戏,毕竟这是欧拉函数的命门。
比如算 $phi(6)$,咱们想想 1 到 6 这六个数字:1, 2, 3, 4, 5, 6。跟 6 没公因数,也就是互质的有 1, 5 这两个,故此 $phi(6)=2$。再来个 $phi(8)$,1, 3, 5, 7 跟 8 互质,一共四个,$phi(8)=4$。
实际上欧拉函数的定义挺好办,就是某个正整数 $n$ 和它小于它的正整数 $k$ 的最大公约数 $gcd(n, k)$ 不等于 1 的 $k$ 的个数。 大量人一上来就急着套公式 $phi(n) = n prod_{p|n} (1 - 1/p)$,这操作忒像背题了。咱们换个路子,看看能不能把数拆得更碎一点,比如把 $n$ 写成质因数的乘积。
比如 $n = 12$,它实际上是 $2 times 2 times 3$。
这时候公式里的 $1 - 1/2$ 对应的就是两个 2,$1 - 1/3$ 对应的就是一个 3。算下来:$12 times (1/2) times (1/2) times (2/3) = 2$。咦?仿佛跟刚刚枚举法算的 $phi(12)=4$ 不一样?
什么的,我是不是记反了?
要么哪步算错了?哎呀,错了错了,$phi(12)$ 应当是 4 才对啊,1, 5, 7, 11 跟 12 互质。
不对,等下,1 到 12 里跟 12 互质的数有 1, 5, 7, 11,这四个没错。
那公式里的 $(1-1/2)(1-1/3)$ 为啥我就当作算成了 2 呢?哦对了,是 $12 times frac{1}{2} times frac{2}{3}$,$12$ 乘 $frac{1}{2}$ 是 6,再乘 $frac{2}{3}$ 是 4。
原来不是两个 2,而是两个不同的质数因子。
没错,两个 2 是 $12 times frac{1}{2} times frac{1}{2} = 3$,再乘以 $frac{2}{3}$ 是 2,这就错了。啊,我明白了,公式里的乘号前面实际上是两个 $(1-1/p)$,等于 $1 - 1/p - 1/q + 1/(pq)$。
故此 $12 times (1 - 1/2) times (1 - 1/3) = 12 times frac{1}{2} times frac{2}{3} = 4$。
这才对嘛。
故此这个公式本质上就是一次概率计算:把 $n$ 均匀的撒在 1 到 $n$ 的区间里,筛掉所有能被某个质数整除的数,剩下的就是那些“干干净利落净”的数。 为了更直观地理解这种“筛除”的过程,咱们再看几个实打实的例子。比方说 $phi(16)$,16 是 $2^4$。根据公式,$phi(16) = 16 times (1 - 1/2) = 8$。我们验证一下:1, 3, 5, 7, 9, 11, 13, 15 跟 16 互质,没错,八个。再比如 $phi(30)$,30 的质因数有 2, 3, 5。$phi(30) = 30 times (1 - 1/2) times (1 - 1/3) times (1 - 1/5) = 30 times frac{1}{2} times frac{2}{3} times frac{4}{5} = 8$。
这个数有点意思:1, 7, 11, 13, 17, 19, 23, 29。
确实,挺稀有的。 再说说个 $phi(42)$,42 的质因数是 2, 3, 7。$phi(42) = 42 times frac{1}{2} times frac{2}{3} times frac{6}{7} = 12$。也就是 1, 5, 11, 13, 17, 19, 23, 29, 31。凑齐了九个互质数,正好。 说到这里,是不是认定欧拉函数就是个好办的加减乘除?不彻底是。它背后藏着大量有趣的性质。
比方说,要是 $p$ 是质数,那么 $phi(p) = p - 1$。
要是 $p$ 是合数,那 $phi(p^k) = p^k - p^{k-1}$。
还有两个特别经典的结论,一个是积性函数,要是 $m$ 和 $n$ 互质,那 $phi(mn) = phi(m)phi(n)$。另一个是 $phi(p^k)$ 和 $p^k$ 的比值,这个比值一辈子小于 2,并且随着指数 $k$ 增添,这个比值会越来越接近 1。 比如算 $phi(30)$,比值为 $8/30 = 4/15 approx 0.267$。
要是是 $phi(2 times 3 times 5) = 8$,比值还是 $8/30$。
要是是 $phi(2^3 times 3) = 48/12 = 4$,比值 $4/12 = 1/3$。对于 $phi(p^k)/p^k$ 的极限,当 $k$ 挺大时,这个比值趋近于 $1/e$,也就是大约 0.368。
这意味着,一个挺大的数 $n$,跟它互质的概率实际上挺低的,大约只有 37% 左右。 从另一个角度看,欧拉函数跟高斯圆周函数 $Gamma(z)$ 要么黎曼 $zeta(s)$ 函数也相关系。$sum_{n=1}^{infty} frac{phi(n)}{n^s} = frac{zeta(s-1)}{zeta(s)}$。
这个级数收敛速度挺快,出于 $phi(n)$ 大约是 $n ln ln n$ 量级,比 $n$ 小得多。 说回实际应用,别看大家目前都用计算机算大数,但在早期的密码学里,比如 RSA 算法,实际上就依赖这种“互质”的性质。选两个大质数 $p$ 和 $q$,然后算 $n = p times q$,再用 $phi(n) = (p-1)(q-1)$ 算加密指数 $e$。
这样保证 $e$ 和 $phi(n)$ 互质,才能算出 $d$。别看目前 RSA 也面临量子计算的挑战,但核心逻辑还是“两个大质数的乘积”和“乘积减去一局部”这种结构。 还有啊,欧拉函数在图论里也有用。
比如狄利克雷卷积 $phi 1$,结局就是 $delta$ 函数,也就是 $1$。
这个卷积过程,本质上就是不断地筛选掉倍数,就像欧拉函数定义一样。 最终再唠两句,欧拉函数有时候被吐槽得忒花哨了,非得把“互质”这种概念硬塞进公式里,显得忒复杂。
实际上为了算它,时常要写一堆 $gcd$ 函数,就算不写代码写死,脑子也得转半天。
不过换个说法,就是筛法里的“埃拉托斯特尼筛法”的升级版,直接把所有合数全筛一遍,剩下的就是合数要么 1,再减去合数的个数,要么反过来,看剩下来的个数是不是等于 $phi(n)$ 的个数。 总而言之,欧拉函数就是个数学上的小精灵,专门负责把“互质”这事儿量化成具体的数字。它不吓人,也不枯燥,只要你敢去把它拆明白,你会发现它比想象中还可爱。
或许它不会告诉你未来会怎么着,但它确实帮了数学系大量忙,也帮工程师们跑了挺久程序。