上一篇我们深入研究了素数——那些乘法世界里无法再拆分的"原子",并用算术基本定理确立了每个正整数的唯一素因数分解。今天我们要把这把"素数钥匙"用在一个新的问题上:当两个整数放在一起,它们之间存在多大的"公共尺度"?准确地回答这个问题,需要引入本篇的核心概念——最大公因数(Greatest Common Divisor,简称 GCD)。
最大公因数的重要性远超它的定义看起来那么简单。它是分数约分的数学根基,是初中数论中公因数理论的枢纽,也是密码学、计算机算法与代数理论中反复出现的基本工具。欧几里得在公元前三世纪就完整地写下了求 GCD 的算法,并在两千多年后的今天依然被所有主流编程语言直接调用——这种跨越时代的有效性,值得我们用足够的耐心把它理解透彻。
假设你有 颗糖和 块饼干,要分给一群小朋友,要求每个人拿到的糖和饼干一样多,而且必须全部分完、不允许有剩余。那么每人最多能分到多少份?
换个角度想:我们需要找一个正整数 ,它既整除 ,又整除 ,而且要尽量大。 的正因数有 ; 的正因数有 。把两个列表对比,公共的有 ,其中最大的是 。确认一下:,,每人分 份,两种零食都恰好分完,没有剩余。这就是"最大公因数"在实际场景中的面目——找到两数共同的最大"量尺"。

有了直觉图像,正式的定义就水到渠成了。
最大公因数的定义:设整数 不全为零。正整数 称为 与 的公因数(common divisor),若 且 。所有公因数中最大的那个,称为 与 的,记作 。有些教材也写成 ,两种记号都合法,本篇统一用 。
定义里有几个边界情形值得单独说清楚,以免日后踩坑。最大公因数对于参数的顺序是无所谓的,,因为两者的公因数集合完全相同。对于负数,,因为一个数的因数集合与其绝对值的因数集合相同。对于零,(其中 ),因为 能被任何非零整数整除,所以 的所有因数都是 与 的公因数,最大的当然是 本身。至于 ,不同教材处理不一,通常建议不去定义它,遇到时按具体约定走。
最大公因数满足几条值得内化的核心性质, 整除 也整除 ,这是"公因数"二字的字面含义;更深刻的是它的"最大性"——若 是 和 的任意公因数,则 ,即最大公因数统领所有公因数。这两条性质合在一起,意味着 不仅是公因数中最大的,而且是所有其他公因数的"上司"——任何公因数都能整除它。 此外, 说明放大两个数的公因数相当于按比例放大 GCD; 说明对其中一个数加上另一个的任意整数倍,GCD 不变——这正是辗转相除法的数学依据。
最大公因数等于 的情形有独立的名字和丰富的内涵,值得单独一节来介绍。若 ,我们说 与 互质(coprime,或 relatively prime)。互质是两个数之间的关系,而不是某个数自身的属性—— 和 各自都是合数,但 ,它们彼此互质,合数之间完全可以互质。
有一个优雅的规律:相邻两个正整数永远互质,即 对所有正整数 成立。证明是直接的:设正整数 同时整除 和 ,则 也整除它们的差 ,而唯一能整除 的正整数就是 本身,故 。这个论证本质上用的是整除的线性性——公因数必定整除两数的任意线性组合,特别是差——这是后续很多证明里反复出现的基本逻辑。
互质的重要性还体现在一条关键性质上:若 且 ,则 。这条定理叫做"欧几里得引理的基本形式",是整除理论中的核心工具,后续的百射定理、素数乘积整除性等都以它为基础,我们在例题中会给出完整证明。
求最大公因数有三种主要方法,它们各有侧重:短除法给直觉,辗转相除法给速度,素因数分解法给结构。理解三者各自适用的场合,比只会一种方法重要得多。
短除法的思路是反复用公因数去除两数,直到两个商互质为止,左侧用过的因数连乘即为 GCD。以 为例,先用 除两次,再用 除一次,得到商 和 ,两者互质,停止。左侧的因数 就是答案。短除法的优点是直观,便于解释给初学者;缺点是依赖"每一步恰好选到公因数"的直觉,数字稍大时容易漏掉某些因子,不够可靠。
辗转相除法(欧几里得算法)是数学史上最早被严格记录的算法之一,欧几里得在公元前约 年的《几何原本》第七卷中已有完整描述,中国的《九章算术》中也以"更相减损术"的形式独立发现了类似思想。它的核心等式简洁而深刻:
其中 是 除以 的余数。这个等式的正确性不难证明:设 (带余除法),若正整数 同时整除 和 ,则它也整除 ;反过来,若 同时整除 和 ,则它也整除 。因此 的公因数集合与 的公因数集合完全相同,最大值自然也相同。这就是等式成立的根本原因——不是技巧性的变形,而是公因数集合的完全等价。
辗转相除法的执行过程:将大数除以小数,取余数;再用小数除以余数,取新余数;如此循环,每步余数都严格减小,最终余数降为 ,此时最后一个非零余数就是 GCD。余数序列是严格递减的正整数序列,必定在有限步后终止,算法保证结束。
以 为例:,,。余数序列 ,最后的非零余数是 ,故 。用素因数分解验证:,,公共素因子之积为 ,吻合。
辗转相除法的深层价值在于它的效率。数学家拉梅(Lamé)在 年证明,求 所需的除法次数不超过较小数的十进制位数的五倍。对于现代计算机处理的数百位整数,其他方法(如先做素因数分解)完全无法胜任,而辗转相除法依然高效运转。这正是它"赢了两千年"的根本原因。
若已知 和 (缺的素因子指数取零),则
直觉上, 里每个素因子的指数是两数中该指数的较小值——公因数必须整除两数,所以每个素因子的指数不能超过两数中该指数的最小值,而这个最小值恰好是能达到的最大值。这个公式更多用于"理解结构"和"证明性质",因为对大数而言,素因数分解本身就比辗转相除法慢得多,不适合作为实用的计算工具。

法国数学家艾田·裴蜀(Étienne Bézout,1730—1783)证明了关于最大公因数最令人惊喜的一条定理,它把 GCD 与整数的线性组合联系了起来:
裴蜀定理(Bézout's Identity):对任意不全为零的整数 ,一定存在整数 ,使得
进一步, 能取到的所有整数值,恰好是 的所有整数倍。换言之, 是集合 中的最小正元素。
这里 被称为裴蜀系数(Bézout coefficients),可以是负数,且不唯一——满足条件的整数对 有无穷多个。裴蜀定理最重要的特例是: 当且仅当存在整数 使得 。这个充要关系在证明时极为有用:想证明两数互质,就去构造满足条件的 ;反过来,已知互质,就能"召唤"线性表示来处理整除推导。
如何找到裴蜀系数?用辗转相除法跑完所有步骤后,从最后一步向前"倒代"即可。这个过程叫做扩展欧几里得算法,是密码学中 RSA 算法求模逆元的核心步骤。以 为例:正向步骤给出 和 ,将前者代入后者得
所以 ,裴蜀系数为 。验算:,正确。
裴蜀定理有一个优美的推论,揭示了分数约分背后的数学结构:若 ,则 。也就是说,把两个数分别除以它们的最大公因数,得到的两个数必然互质。这正是分数约分的本质:把分子和分母同时除以 GCD,得到最简分数,新的分子分母互质,无法再继续约分。从这个角度看,"约分到最简"并非偶然,而是由最大公因数的结构性质所保证的必然结果。
题目:用辗转相除法求 ,并验证结果。
按照辗转相除法逐步做带余除法,每步用较大数除以较小数,取余数:,余数为 。
以新的一对数 继续:,余数为 。
题目:求整数 使得 。
先用辗转相除法确定 GCD,同时记下每步的余数表达式,以便倒推。
,即 ……(A)
题目:证明:若 且 ,则 。
由裴蜀定理, 意味着存在整数 使得 。两边同乘以 ,得 。
题目:用素因数分解法求 。
两个数已经写成素因数分解形式,对每个出现的素数 ,取两数中对应指数的较小值。将缺失的素因子指数记为 :
第一个数含 ;第二个数含 。取各项最小值:,,,。
题目:两段绳子,一段长 ,另一段长 。要把两段绳子都剪成等长的小段,不允许有剩余,每小段最长可以是多少厘米?
题目要求找一个正整数 ,它既整除 又整除 ,且 尽可能大,这正是 的定义。
题目:已知 ,证明 。
设 ,,其中 , 均为正整数。设 ,需要证明 。
Fibonacci 数列 隐藏着一条与辗转相除法深度关联的定理:相邻两个 Fibonacci 数永远互质,即 对所有 成立。证明并不难——对 反复用辗转相除法,最终的余数序列恰好就是 Fibonacci 数列本身逆序往前推,最终终止于 。
更一般的结论是 ,即 Fibonacci 数的公因数结构与下标的公因数结构完全对应。当你对 Fibonacci 数运行辗转相除法时,它会用尽可能多的步数,因为每步余数只减少一个 Fibonacci 项——这正是辗转相除法理论上需要最多步数的"最坏情形"。拉梅(Lamé) 年证明辗转相除步数上界时,正是用 Fibonacci 数列构造了极端情形。
练习一:用辗转相除法求 ,并说明这两个数在 Fibonacci 数列中的位置(提示:,),验证你的计算结果与 Fibonacci GCD 定理是否吻合。
辗转相除:,,,,,,,,,,,,,,终止。故 。
练习二:已知 且 ,求 (提示:先分别确定 和 模 的余数范围)。
由 ,知 但 (若 ,则 , 或至少为 ,矛盾)。所以 是 的倍数但不是 的倍数,即 或 。
练习三:证明:若 是素数且 ,则 (利用裴蜀定理的推论,或直接用本篇例题三的结论)。
由 ,利用例题三的结论(欧几里得引理):若 ,则由 得 ,矛盾;所以不可能 。由于 是素数, 只能是 或 ,既然不是 ,则 ,即 。
最大公因数是整除理论的核心节点,它把"两个数的公共因数"这个概念提炼为一个精确的数学对象。三种计算方法各有侧重:短除法提供直觉入口,辗转相除法提供两千年实战检验的效率保证(核心等式 的本质是公因数集合的完全等价),素因数分解法提供结构性的理解(每个素因子取指数的较小值)。裴蜀定理则揭示了 GCD 的线性表示能力: 是所有整数线性组合 中最小的正值,而 与 有整数解之间的充要等价,是后续大量证明的起手式。把 GCD 与互质、约分、整除传递联系起来理解,比孤立地记住若干性质更有价值,因为这些联系揭示的是整除理论内在的统一结构。下一篇,我们把目光转向与 GCD 互为镜像的对象——最小公倍数,看看两者如何从不同方向共同刻画两个整数之间的数量关系。

以 继续:,余数为 ,算法终止。最后的非零余数是 ,故 。
验证:,,进一步 ,说明 和 互质,不能再约,结果正确。
,即 ……(B)
,即 ……(C)
,即 ……(D)
,终止。故 ,两数互质。
从 (D) 开始向前倒代,逐步把 表达成 和 的线性组合。由 (D):。将 (C) 代入,把 替换:。
将 (B) 代入,把 替换:。将 (A) 代入,把 替换:。
整理得 。验算:。 一组裴蜀系数为 。
由已知 ,所以 (因为 ,而 意味着 )。同时显然 。因此 整除 ,即 。
这道题的核心操作是"用裴蜀定理召唤线性表示",这是遇到互质条件时的标准起手式。乘以目标数 后, 就"出现"在等式的右边,再逐项验证整除性即可。
故 。
可以直观地验证: 整除两个数(,),且 和 互质(),说明 确实是最大公因数。
用辗转相除法:,,终止。。
每小段最长为 。验证:,,两段绳子都能剪成整数段,无剩余,且 说明不能再找更大的公因数, 确实是最大值。
由 且 ,得 且 ,即 是 和 的公因数。
由 的"最大性"——所有公因数都整除 ——得 ,故 ,因此 。
这个结论是分数约分的数学本质:把分子分母同时除以其最大公因数,就得到最简分数,新的分子分母必然互质,无法再约。"化到最简"的终止条件,正是这条定理的保证。
验证:,,(因为相邻整数必然互质,),与计算结果吻合。注意辗转相除走了 步,体现了 Fibonacci 数是辗转相除"最慢情形"的结构性原因。
由 ,知 但 。所以 (奇数中 的倍数模 余 )。
取 时:,,故 。
取 时:,,故 。
两种情况下 ,即 与 互质。
更简洁的写法:由 是素数, 要么是 要么是 。若 ,结论已成立。若 ,则由 和互质整除传递,得 ,同样成立。这个结论是" 是无理数"的关键步骤,一般课本用它证明 不是有理数:若 最简,则 ,故 ,由本定理得 ,设 ,代入得 ,即 ,故 ,由本定理得 ,与 为最简分数矛盾。