MathLabs

6 年级

最大公约数、最小公倍数与欧几里得算法

整数的最大公因数与最小公倍数,可用欧几里得算法高效计算。

直观最大公共分块与最早公共周期

假设有两根长分别为 4848 cm 和 1818 cm 的丝带,想把它们都剪成尽可能长的整厘米等长小段而不留余料:这个最大长度就是 gcd⁡(48,18)=6\gcd(48,18)=6 cm,即最大公约数。反过来,如果一盏信标灯每 4848 秒闪烁一次,另一盏每 1818 秒闪烁一次,它们下一次同时闪烁的最早正时间是 lcm⁡(48,18)=144\operatorname{lcm}(48,18)=144 秒,即最小公倍数。

展示欧几里得算法将 (48,18) 化简到 (6,0) 的有向步骤图
几何欧几里得算法:用尽可能大的正方形逐步铺砌 (n+5)×n(n+5)\times n 矩形,直到最后一个正方形恰好铺满余下部分——其边长即为 gcd⁡(n+5,n)\gcd(n+5, n)。

中学定义、欧几里得算法与乘积恒等式

定义: 最大公约数与最小公倍数

对于正整数 a,ba,b,最大公约数 gcd⁡(a,b)\gcd(a,b) 是满足 d∣ad\mid a 且 d∣bd\mid b 的最大正整数 dd(当 gcd⁡(a,b)=1\gcd(a,b)=1 时,称 aa 与 bb 互质)。最小公倍数 lcm⁡(a,b)\operatorname{lcm}(a,b) 是满足 a∣ma\mid m 且 b∣mb\mid m 的最小正整数 mm。

gcd⁡(a,b)=gcd⁡(b,r)(a=bq+r, 0≤r<b)\gcd(a,b) = \gcd(b,r) \qquad (a = bq + r,\ 0 \le r < b)

这是欧几里得算法(辗转相除法)的核心步骤:用 bb 除 aa 得到 a=bq+r, 0≤r<ba=bq+r,\ 0\le r<b,可通过 gcd⁡(a,b)=gcd⁡(b,r)\gcd(a,b)=\gcd(b,r) 保持最大公约数不变。重复此过程直到余数为 00,无需对 aa 或 bb 做质因数分解即可求出 gcd⁡(a,b)\gcd(a,b)。

gcd⁡(a,b)⋅lcm⁡(a,b)=ab(a,b>0)\gcd(a,b) \cdot \operatorname{lcm}(a,b) = a b \qquad (a,b > 0)

一旦求出 gcd⁡(a,b)\gcd(a,b),便可由乘积恒等式 gcd⁡(a,b)⋅lcm⁡(a,b)=ab\gcd(a,b)\cdot\operatorname{lcm}(a,b)=ab 立即得到 lcm⁡(a,b)\operatorname{lcm}(a,b):用乘积 abab 除以 gcd⁡(a,b)\gcd(a,b) 即可。

最大公约数、最小公倍数与乘积恒等式示例
数对 (a,b)(a,b)gcd⁡(a,b)\gcd(a,b)lcm⁡(a,b)\operatorname{lcm}(a,b)乘积检验
(8,12)(8,12)4424244×24=8×12=964\times24=8\times12=96
(9,16)(9,16)111441441×144=9×16=1441\times144=9\times16=144
(15,25)(15,25)5575755×75=15×25=3755\times75=15\times25=375
(48,18)(48,18)661441446×144=48×18=8646\times144=48\times18=864

大学欧几里得算法与乘积公式为何成立

对满足 a=bq+r, 0≤r<ba=bq+r,\ 0\le r<b 的整数 a≥b>0a\ge b>0,aa 与 bb 的公因数集合等于 bb 与 rr 的公因数集合;因此 gcd⁡(a,b)=gcd⁡(b,r)\gcd(a,b)=\gcd(b,r),且重复带余除法必在有限步内终止,最后一个非零余数恰为 gcd⁡(a,b)\gcd(a,b)。

为什么成立?

从 aa 中减去 bb 的倍数不会凭空产生或消除与 bb 的公因数:任何同时整除 aa 和 bb 的数也必然整除余下的 r=a−bqr=a-bq,反之亦然。

证明

第一步(公因数集合相同)。设整数 dd 同时整除 aa 和 bb,即对整数 x,yx,y 有 a=dxa=dx、b=dyb=dy。则 r=a−bq=dx−dyq=d(x−yq)r=a-bq=dx-dyq=d(x-yq),故 d∣rd\mid r,即 dd 同时整除 bb 和 rr。反之,若 dd 同时整除 bb 和 rr,设 b=dyb=dy、r=dzr=dz,则 a=bq+r=dyq+dz=d(yq+z)a=bq+r=dyq+dz=d(yq+z),故 d∣ad\mid a,即 dd 同时整除 aa 和 bb。

第二步(最大公约数相等)。由于数对 (a,b)(a,b) 与 (b,r)(b,r) 拥有完全相同的公因数集合,它们的最大元素必然相同:gcd⁡(a,b)=gcd⁡(b,r)\gcd(a,b)=\gcd(b,r)。

第三步(有限步终止)。每一步带余除法产生的余数都满足 0≤r<b0\le r<b,因此第二个数构成的序列 b>r1>r2>⋯≥0b > r_1 > r_2 > \cdots \ge 0 是严格递减的非负整数序列。这样的序列最多经过 bb 步就会到达 00;在 gcd⁡(rk−1,rk)=gcd⁡(rk,0)=rk\gcd(r_{k-1},r_k)=\gcd(r_k,0)=r_k 这一步,最后一个非零余数 rkr_k 就是 gcd⁡(a,b)\gcd(a,b)。

对任意两个正整数 aa 和 bb,都有 gcd⁡(a,b)⋅lcm⁡(a,b)=ab\gcd(a,b)\cdot\operatorname{lcm}(a,b)=ab。

为什么成立?

对每个质数 pp,gcd⁡(a,b)\gcd(a,b) 取 pp 在 a,ba,b 中较小的指数,而 lcm⁡(a,b)\operatorname{lcm}(a,b) 取较大的指数;两个数中较小者与较大者相加,总等于这两个数之和。

证明

第一步。对所有质数 pp 写出 aa 和 bb 的质因数分解:a=∏ppepa=\prod_p p^{e_p},b=∏ppfpb=\prod_p p^{f_p},其中 ep,fp≥0e_p,f_p\ge0 且只有有限个指数非零。

第二步。正整数 d=∏ppcpd=\prod_p p^{c_p} 同时整除 aa 和 bb,当且仅当对每个 pp 有 cp≤epc_p\le e_p 且 cp≤fpc_p\le f_p,故最大公因数取 cp=min⁡(ep,fp)c_p=\min(e_p,f_p):gcd⁡(a,b)=∏ppmin⁡(ep,fp)\gcd(a,b)=\prod_p p^{\min(e_p,f_p)}。对公倍数做对偶推理,取同时不小于两者的最小指数,得 lcm⁡(a,b)=∏ppmax⁡(ep,fp)\operatorname{lcm}(a,b)=\prod_p p^{\max(e_p,f_p)}。

第三步。对任意两个实数都有 min⁡(ep,fp)+max⁡(ep,fp)=ep+fp\min(e_p,f_p)+\max(e_p,f_p)=e_p+f_p。因此将两个乘积按质数逐项相乘,即得 gcd⁡(a,b)⋅lcm⁡(a,b)=∏ppmin⁡(ep,fp)+max⁡(ep,fp)=∏ppep+fp=(∏ppep)(∏ppfp)=ab\gcd(a,b)\cdot\operatorname{lcm}(a,b)=\prod_p p^{\min(e_p,f_p)+\max(e_p,f_p)}=\prod_p p^{e_p+f_p}=\left(\prod_p p^{e_p}\right)\left(\prod_p p^{f_p}\right)=ab。

大学实际应用与典型例题

建筑工程师用 gcd⁡(a,b)\gcd(a,b) 选择无需切割即可铺满矩形地面的最大正方形模块瓷砖;交通规划师和嵌入式系统工程师用 lcm⁡(a,b)\operatorname{lcm}(a,b) 计算周期性任务或公交时刻表的超周期;而密码学每秒都在上千位二进制整数上运行数百万次欧几里得算法。

例题: 用最大正方形石板铺设庭院

一个矩形庭院尺寸为 4848 m 乘 1818 m。你想用边长为整米数的相同正方形石板将其完全铺满且不做切割。可用的最大石板边长是多少?共需多少块石板?

解答

第一步:边长为 ss m 的正方形石板在两个方向上都无需切割即可铺满,当且仅当 s∣48s\mid48 且 s∣18s\mid18,故最大的 ss 为 gcd⁡(48,18)\gcd(48,18)。

第二步:运行欧几里得算法:48=2×18+1248=2\times18+12,接着 18=1×12+618=1\times12+6,最后 12=2×6+012=2\times6+0。最后一个非零余数是 66,所以 gcd⁡(48,18)=6\gcd(48,18)=6 m。

第三步:计算石板数量:长边方向 48÷6=848\div6=8 块,宽边方向 18÷6=318\div6=3 块,共需 8×3=248\times3=24 块。

例题: 两条公交线路的同步

A 路公交每 1212 分钟从中心站发车一次,B 路每 1818 分钟发车一次。两路车在 08:0008{:}00 同时发车。多少分钟后它们会再次同时发车?对应几点几分?

解答

第一步:A 路在 1212 分钟的倍数时刻发车,B 路在 1818 分钟的倍数时刻发车,因此下一次同时发车是在 lcm⁡(12,18)\operatorname{lcm}(12,18) 分钟后。

第二步:先求最大公约数:18=1×12+618=1\times12+6 且 12=2×6+012=2\times6+0,得 gcd⁡(12,18)=6\gcd(12,18)=6。

第三步:应用乘积恒等式:lcm⁡(12,18)=12×186=36\operatorname{lcm}(12,18)=\dfrac{12\times18}{6}=36 分钟。在 08:0008{:}00 上加上 3636 分钟,下一次同时发车时间是 08:3608{:}36。

对 (48,18)(48,18) 使用欧几里得算法的第一步 48=2×18+1248=2\times18+12,下列最大公约数等式哪个成立?

两个正整数 a,ba,b 满足 ab=180ab=180 且 gcd⁡(a,b)=6\gcd(a,b)=6。lcm⁡(a,b)\operatorname{lcm}(a,b) 是多少?

下列哪对数是互质的(gcd⁡(a,b)=1\gcd(a,b)=1)?

齿数分别为 1616 和 2020 的两个齿轮在某对标记齿处啮合。经过多少个齿的转动后,同一对标记齿会首次再次对齐?

参考文献

  1. David M. Burton (2010). Elementary Number Theory
  2. John H. Conway, Richard K. Guy (1996). The Book of Numbers · DOI:10.1007/978-1-4612-4072-3