← 返回 资料库 › 算术与数论 › 初等算术 6 年级
最大公约数、最小公倍数与欧几里得算法 整数的最大公因数与最小公倍数,可用欧几里得算法高效计算。
直观 最大公共分块与最早公共周期 假设有两根长分别为 48 48 48 cm 和 18 18 18 cm 的丝带,想把它们都剪成尽可能长的整厘米等长小段而不留余料:这个最大长度就是 gcd ( 48 , 18 ) = 6 \gcd(48,18)=6 g cd( 48 , 18 ) = 6 cm,即最大公约数 。反过来,如果一盏信标灯每 48 48 48 秒闪烁一次,另一盏每 18 18 18 秒闪烁一次,它们下一次同时闪烁的最早正时间是 lcm ( 48 , 18 ) = 144 \operatorname{lcm}(48,18)=144 lcm ( 48 , 18 ) = 144 秒,即最小公倍数 。
几何欧几里得算法:用尽可能大的正方形逐步铺砌 ( n + 5 ) × n (n+5)\times n ( n + 5 ) × n 矩形,直到最后一个正方形恰好铺满余下部分——其边长即为 gcd ( n + 5 , n ) \gcd(n+5, n) g cd( n + 5 , n ) 。 中学 定义、欧几里得算法与乘积恒等式 定义: 最大公约数与最小公倍数
对于正整数 a , b a,b a , b ,最大公约数 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 是满足 d ∣ a d\mid a d ∣ a 且 d ∣ b d\mid b d ∣ b 的最大正整数 d d d (当 gcd ( a , b ) = 1 \gcd(a,b)=1 g cd( a , b ) = 1 时,称 a a a 与 b b b 互质 )。最小公倍数 lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) 是满足 a ∣ m a\mid m a ∣ m 且 b ∣ m b\mid m b ∣ m 的最小正整数 m m m 。
gcd ( a , b ) = gcd ( b , r ) ( a = b q + r , 0 ≤ r < b ) \gcd(a,b) = \gcd(b,r) \qquad (a = bq + r,\ 0 \le r < b) g cd( a , b ) = g cd( b , r ) ( a = b q + r , 0 ≤ r < b ) 这是欧几里得算法(辗转相除法) 的核心步骤:用 b b b 除 a a a 得到 a = b q + r , 0 ≤ r < b a=bq+r,\ 0\le r<b a = b q + r , 0 ≤ r < b ,可通过 gcd ( a , b ) = gcd ( b , r ) \gcd(a,b)=\gcd(b,r) g cd( a , b ) = g cd( b , r ) 保持最大公约数不变。重复此过程直到余数为 0 0 0 ,无需对 a a a 或 b b b 做质因数分解即可求出 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 。
gcd ( a , b ) ⋅ lcm ( a , b ) = a b ( a , b > 0 ) \gcd(a,b) \cdot \operatorname{lcm}(a,b) = a b \qquad (a,b > 0) g cd( a , b ) ⋅ lcm ( a , b ) = ab ( a , b > 0 ) 一旦求出 gcd ( a , b ) \gcd(a,b) g cd( a , b ) ,便可由乘积恒等式 gcd ( a , b ) ⋅ lcm ( a , b ) = a b \gcd(a,b)\cdot\operatorname{lcm}(a,b)=ab g cd( a , b ) ⋅ lcm ( a , b ) = ab 立即得到 lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) :用乘积 a b ab ab 除以 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 即可。
最大公约数、最小公倍数与乘积恒等式示例 数对 ( a , b ) (a,b) ( a , b ) gcd ( a , b ) \gcd(a,b) g cd( a , b ) lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) 乘积检验 ( 8 , 12 ) (8,12) ( 8 , 12 ) 4 4 4 24 24 24 4 × 24 = 8 × 12 = 96 4\times24=8\times12=96 4 × 24 = 8 × 12 = 96 ( 9 , 16 ) (9,16) ( 9 , 16 ) 1 1 1 144 144 144 1 × 144 = 9 × 16 = 144 1\times144=9\times16=144 1 × 144 = 9 × 16 = 144 ( 15 , 25 ) (15,25) ( 15 , 25 ) 5 5 5 75 75 75 5 × 75 = 15 × 25 = 375 5\times75=15\times25=375 5 × 75 = 15 × 25 = 375 ( 48 , 18 ) (48,18) ( 48 , 18 ) 6 6 6 144 144 144 6 × 144 = 48 × 18 = 864 6\times144=48\times18=864 6 × 144 = 48 × 18 = 864
大学 欧几里得算法与乘积公式为何成立 对满足 a = b q + r , 0 ≤ r < b a=bq+r,\ 0\le r<b a = b q + r , 0 ≤ r < b 的整数 a ≥ b > 0 a\ge b>0 a ≥ b > 0 ,a a a 与 b b b 的公因数集合等于 b b b 与 r r r 的公因数集合;因此 gcd ( a , b ) = gcd ( b , r ) \gcd(a,b)=\gcd(b,r) g cd( a , b ) = g cd( b , r ) ,且重复带余除法必在有限步内终止,最后一个非零余数恰为 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 。
为什么成立? 从 a a a 中减去 b b b 的倍数不会凭空产生或消除与 b b b 的公因数:任何同时整除 a a a 和 b b b 的数也必然整除余下的 r = a − b q r=a-bq r = a − b q ,反之亦然。
证明 第一步(公因数集合相同)。设整数 d d d 同时整除 a a a 和 b b b ,即对整数 x , y x,y x , y 有 a = d x a=dx a = d x 、b = d y b=dy b = d y 。则 r = a − b q = d x − d y q = d ( x − y q ) r=a-bq=dx-dyq=d(x-yq) r = a − b q = d x − d y q = d ( x − y q ) ,故 d ∣ r d\mid r d ∣ r ,即 d d d 同时整除 b b b 和 r r r 。反之,若 d d d 同时整除 b b b 和 r r r ,设 b = d y b=dy b = d y 、r = d z r=dz r = d z ,则 a = b q + r = d y q + d z = d ( y q + z ) a=bq+r=dyq+dz=d(yq+z) a = b q + r = d y q + d z = d ( y q + z ) ,故 d ∣ a d\mid a d ∣ a ,即 d d d 同时整除 a a a 和 b b b 。
第二步(最大公约数相等)。由于数对 ( a , b ) (a,b) ( a , b ) 与 ( b , r ) (b,r) ( b , r ) 拥有完全相同的公因数集合,它们的最大元素必然相同:gcd ( a , b ) = gcd ( b , r ) \gcd(a,b)=\gcd(b,r) g cd( a , b ) = g cd( b , r ) 。
第三步(有限步终止)。每一步带余除法产生的余数都满足 0 ≤ r < b 0\le r<b 0 ≤ r < b ,因此第二个数构成的序列 b > r 1 > r 2 > ⋯ ≥ 0 b > r_1 > r_2 > \cdots \ge 0 b > r 1 > r 2 > ⋯ ≥ 0 是严格递减的非负整数序列。这样的序列最多经过 b b b 步就会到达 0 0 0 ;在 gcd ( r k − 1 , r k ) = gcd ( r k , 0 ) = r k \gcd(r_{k-1},r_k)=\gcd(r_k,0)=r_k g cd( r k − 1 , r k ) = g cd( r k , 0 ) = r k 这一步,最后一个非零余数 r k r_k r k 就是 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 。
对任意两个正整数 a a a 和 b b b ,都有 gcd ( a , b ) ⋅ lcm ( a , b ) = a b \gcd(a,b)\cdot\operatorname{lcm}(a,b)=ab g cd( a , b ) ⋅ lcm ( a , b ) = ab 。
为什么成立? 对每个质数 p p p ,gcd ( a , b ) \gcd(a,b) g cd( a , b ) 取 p p p 在 a , b a,b a , b 中较小的指数,而 lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) 取较大的指数;两个数中较小者与较大者相加,总等于这两个数之和。
证明 第一步。对所有质数 p p p 写出 a a a 和 b b b 的质因数分解:a = ∏ p p e p a=\prod_p p^{e_p} a = ∏ p p e p ,b = ∏ p p f p b=\prod_p p^{f_p} b = ∏ p p f p ,其中 e p , f p ≥ 0 e_p,f_p\ge0 e p , f p ≥ 0 且只有有限个指数非零。
第二步。正整数 d = ∏ p p c p d=\prod_p p^{c_p} d = ∏ p p c p 同时整除 a a a 和 b b b ,当且仅当对每个 p p p 有 c p ≤ e p c_p\le e_p c p ≤ e p 且 c p ≤ f p c_p\le f_p c p ≤ f p ,故最大公因数取 c p = min ( e p , f p ) c_p=\min(e_p,f_p) c p = min ( e p , f p ) :gcd ( a , b ) = ∏ p p min ( e p , f p ) \gcd(a,b)=\prod_p p^{\min(e_p,f_p)} g cd( a , b ) = ∏ p p m i n ( e p , f p ) 。对公倍数做对偶推理,取同时不小于两者的最小指数,得 lcm ( a , b ) = ∏ p p max ( e p , f p ) \operatorname{lcm}(a,b)=\prod_p p^{\max(e_p,f_p)} lcm ( a , b ) = ∏ p p m a x ( e p , f p ) 。
第三步。对任意两个实数都有 min ( e p , f p ) + max ( e p , f p ) = e p + f p \min(e_p,f_p)+\max(e_p,f_p)=e_p+f_p min ( e p , f p ) + max ( e p , f p ) = e p + f p 。因此将两个乘积按质数逐项相乘,即得 gcd ( a , b ) ⋅ lcm ( a , b ) = ∏ p p min ( e p , f p ) + max ( e p , f p ) = ∏ p p e p + f p = ( ∏ p p e p ) ( ∏ p p f p ) = a b \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 g cd( a , b ) ⋅ lcm ( a , b ) = ∏ p p m i n ( e p , f p ) + m a x ( e p , f p ) = ∏ p p e p + f p = ( ∏ p p e p ) ( ∏ p p f p ) = ab 。
大学 实际应用与典型例题 建筑工程师用 gcd ( a , b ) \gcd(a,b) g cd( a , b ) 选择无需切割即可铺满矩形地面的最大正方形模块瓷砖;交通规划师和嵌入式系统工程师用 lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) 计算周期性任务或公交时刻表的超周期;而密码学每秒都在上千位二进制整数上运行数百万次欧几里得算法。
例题: 用最大正方形石板铺设庭院
一个矩形庭院尺寸为 48 48 48 m 乘 18 18 18 m。你想用边长为整米数的相同正方形石板将其完全铺满且不做切割。可用的最大石板边长是多少?共需多少块石板?
解答 第一步:边长为 s s s m 的正方形石板在两个方向上都无需切割即可铺满,当且仅当 s ∣ 48 s\mid48 s ∣ 48 且 s ∣ 18 s\mid18 s ∣ 18 ,故最大的 s s s 为 gcd ( 48 , 18 ) \gcd(48,18) g cd( 48 , 18 ) 。
第二步:运行欧几里得算法:48 = 2 × 18 + 12 48=2\times18+12 48 = 2 × 18 + 12 ,接着 18 = 1 × 12 + 6 18=1\times12+6 18 = 1 × 12 + 6 ,最后 12 = 2 × 6 + 0 12=2\times6+0 12 = 2 × 6 + 0 。最后一个非零余数是 6 6 6 ,所以 gcd ( 48 , 18 ) = 6 \gcd(48,18)=6 g cd( 48 , 18 ) = 6 m。
第三步:计算石板数量:长边方向 48 ÷ 6 = 8 48\div6=8 48 ÷ 6 = 8 块,宽边方向 18 ÷ 6 = 3 18\div6=3 18 ÷ 6 = 3 块,共需 8 × 3 = 24 8\times3=24 8 × 3 = 24 块。
例题: 两条公交线路的同步
A 路公交每 12 12 12 分钟从中心站发车一次,B 路每 18 18 18 分钟发车一次。两路车在 08 : 00 08{:}00 08 : 00 同时发车。多少分钟后它们会再次同时发车?对应几点几分?
解答 第一步:A 路在 12 12 12 分钟的倍数时刻发车,B 路在 18 18 18 分钟的倍数时刻发车,因此下一次同时发车是在 lcm ( 12 , 18 ) \operatorname{lcm}(12,18) lcm ( 12 , 18 ) 分钟后。
第二步:先求最大公约数:18 = 1 × 12 + 6 18=1\times12+6 18 = 1 × 12 + 6 且 12 = 2 × 6 + 0 12=2\times6+0 12 = 2 × 6 + 0 ,得 gcd ( 12 , 18 ) = 6 \gcd(12,18)=6 g cd( 12 , 18 ) = 6 。
第三步:应用乘积恒等式:lcm ( 12 , 18 ) = 12 × 18 6 = 36 \operatorname{lcm}(12,18)=\dfrac{12\times18}{6}=36 lcm ( 12 , 18 ) = 6 12 × 18 = 36 分钟。在 08 : 00 08{:}00 08 : 00 上加上 36 36 36 分钟,下一次同时发车时间是 08 : 36 08{:}36 08 : 36 。
常见错误. **乘积恒等式 gcd ( a , b ) ⋅ lcm ( a , b ) = a b \gcd(a,b)\cdot\operatorname{lcm}(a,b)=ab g cd( a , b ) ⋅ lcm ( a , b ) = ab 不能推广为三个或更多数的 gcd ( a , b , c ) ⋅ lcm ( a , b , c ) = a b c \gcd(a,b,c)\cdot\operatorname{lcm}(a,b,c)=abc g cd( a , b , c ) ⋅ lcm ( a , b , c ) = ab c 。** 对三元组 ( 4 , 6 , 10 ) (4,6,10) ( 4 , 6 , 10 ) ,gcd ( 4 , 6 , 10 ) = 2 \gcd(4,6,10)=2 g cd( 4 , 6 , 10 ) = 2 且 lcm ( 4 , 6 , 10 ) = 60 \operatorname{lcm}(4,6,10)=60 lcm ( 4 , 6 , 10 ) = 60 ,二者乘积为 2 × 60 = 120 2\times60=120 2 × 60 = 120 ,但 4 × 6 × 10 = 240 ≠ 120 4\times6\times10=240\neq120 4 × 6 × 10 = 240 = 120 (公因数 2 2 2 被三个数共同含有,从而被重复计入)。求三个数的最小公倍数时,应分步套用两数公式:lcm ( a , b , c ) = lcm ( lcm ( a , b ) , c ) \operatorname{lcm}(a,b,c)=\operatorname{lcm}(\operatorname{lcm}(a,b),c) lcm ( a , b , c ) = lcm ( lcm ( a , b ) , c ) 。 历史注记
欧几里得 在《几何原本》(约公元前 300 300 300 年)第七卷命题 1 1 1 –2 2 2 中记载了求最大公约数的过程,当时用几何语言表述为反复从较长线段中截取较短线段——这使它成为至今仍在日常计算中使用的最古老的非平凡算法。两千多年后,人们发现迫使欧几里得算法在给定规模下执行最多除法步数的输入恰是相邻的斐波那契 数(如 ( 89 , 55 ) (89,55) ( 89 , 55 ) ),从而证明了算法步数至多随输入呈对数增长。
亚历山大里亚的欧几里得 比萨的列奥纳多(斐波那契)
对 ( 48 , 18 ) (48,18) ( 48 , 18 ) 使用欧几里得算法的第一步 48 = 2 × 18 + 12 48=2\times18+12 48 = 2 × 18 + 12 ,下列最大公约数等式哪个成立?
gcd ( 48 , 18 ) = gcd ( 18 , 12 ) \gcd(48,18)=\gcd(18,12) g cd( 48 , 18 ) = g cd( 18 , 12 ) gcd ( 48 , 18 ) = gcd ( 48 , 2 ) \gcd(48,18)=\gcd(48,2) g cd( 48 , 18 ) = g cd( 48 , 2 ) gcd ( 48 , 18 ) = gcd ( 18 , 2 ) \gcd(48,18)=\gcd(18,2) g cd( 48 , 18 ) = g cd( 18 , 2 ) gcd ( 48 , 18 ) = 12 \gcd(48,18)=12 g cd( 48 , 18 ) = 12 两个正整数 a , b a,b a , b 满足 a b = 180 ab=180 ab = 180 且 gcd ( a , b ) = 6 \gcd(a,b)=6 g cd( a , b ) = 6 。lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) 是多少?
30 30 30 180 180 180 1080 1080 1080 6 6 6 下列哪对数是互质的(gcd ( a , b ) = 1 \gcd(a,b)=1 g cd( a , b ) = 1 )?
( 14 , 15 ) (14,15) ( 14 , 15 ) ( 14 , 21 ) (14,21) ( 14 , 21 ) ( 15 , 25 ) (15,25) ( 15 , 25 ) ( 18 , 24 ) (18,24) ( 18 , 24 ) 齿数分别为 16 16 16 和 20 20 20 的两个齿轮在某对标记齿处啮合。经过多少个齿的转动后,同一对标记齿会首次再次对齐?