← 戻る ライブラリ › 算術と数論 › 初等算術 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 の長方形を可能な限り大きな正方形で順に敷き詰めていくと、余りをちょうど埋め尽くす最後の正方形の1辺が 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 ) これがユークリッドの互除法 の核心ステップである:a a a を b b b で割って 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 も割り切らねばならず、逆もまた成り立つ。
証明 ステップ1(公約数の集合の一致)。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 の両方を割り切る。
ステップ2(最大公約数の一致)。組 ( 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 ) 。
ステップ3(有限回での停止)。各除法ステップの余りは 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 ) は a , b a,b a , b における p p p の指数の小さい方を取り、lcm ( a , b ) \operatorname{lcm}(a,b) lcm ( a , b ) は大きい方を取る;二つの数の小さい方と大きい方を足せば、常に元の二つの数の和になる。
証明 ステップ1. すべての素数 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 で、ゼロでない指数は有限個のみ)。
ステップ2. 正の整数 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 ) を得る。
ステップ3. 任意の二つの実数に対して 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 である。切り詰めをせずに、一辺が整数メートルである同一の正方形石板で隙間なく敷き詰めたい。使える最大の一辺の長さは何 m で、石板は何枚必要か。
解答 ステップ1. 一辺 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 ) である。
ステップ2. ユークリッドの互除法を実行する: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。
ステップ3. 石板の枚数を数える:縦に 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 に同時に出発した。次に同時出発するのは何分後で、時計の何時何分か。
解答 ステップ1. 路線Aは 12 12 12 分の倍数ごと、路線Bは 18 18 18 分の倍数ごとに出発するので、最初の正の同時出発時刻は lcm ( 12 , 18 ) \operatorname{lcm}(12,18) lcm ( 12 , 18 ) 分後である。
ステップ2. まず最大公約数を求める: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 。
ステップ3. 積の恒等式を適用する: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 は、3個以上の数に対して 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 が三つすべてに共有され重複して数えられるため)。3個の数の最小公倍数を求めるには、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 年)第VII巻命題 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 の二つの歯車が、印を付けた歯の組を合わせて噛み合っている。同じ印の組が再び最初に噛み合うのは、歯がいくつ進んだときか。