ユークリッドの互除法とは、2つの整数の最大公約数を見つけるための方法で、以下の手順で見つけます。
整数AとBの最大公約数を見つけるには、
2.のように割る数を余りで割ることを繰り返し、余りが0になったときの割る数がAとBの最大公約数となります。
- AとBの大きい方を小さい方で割り、余りr_1を求めます。
- AかBの割る数になった方をr_1で割り、余りr_2を求めます。
例として168と792の最大公約数を求めてみます。
まずは792\div168を計算すると
792\div168=4\ 余り120
となります。
次は割る数の168を余りの120で割って
168\div120=1\ 余り48
となります。
割る数を余りで割ることを繰り返すと
\begin{align*}120\div48&=2\ 余り24\\[1em]48\div24&=2\
余り0\end{align*}
24で割ったとき余りが0になるので168と792の最大公約数は24であるとわかります。
おおまかな最大公約数が求められる仕組みは以下のようになります。
整数AとBの最大公約数をGとすると、
AをBで割ったとき、商がk_1、余りがr_1であったとすると
A=Bk_1+r_1
と書くことができ、(1)より左辺がGの倍数ならば右辺もGの倍数でなければならないこと、BがGの倍数であることからr_1もまたGの倍数であることがわかります。
また、Bで割ったときの余りなので0\leqq r_1<|B|となります。
\begin{equation}A=Ga,\ B=Gb\quad(a,b:互いに素な整数)\end{equation}
となります。AをBで割ったとき、商がk_1、余りがr_1であったとすると
A=Bk_1+r_1
と書くことができ、(1)より左辺がGの倍数ならば右辺もGの倍数でなければならないこと、BがGの倍数であることからr_1もまたGの倍数であることがわかります。
また、Bで割ったときの余りなので0\leqq r_1<|B|となります。
次にBをr_1で割ったときのことを考えると、商がk_2、余りがr_2であるとすると
B=r_1k_2+r_2
となり、上記よりBとr_1はGの倍数なので、r_2もまたGの倍数ということになります。
また、r_1で割ったときの余りなので0\leqq r_2<r_1となります。
このことから互除法の手順を繰り返すと余りはGの倍数かつ前の手順による割り算の余りより小さい(ただし、0以上の)整数となるので、いずれ余りは0になります。
n回目の余りr_nで0になったとすると、このときの割る数は1つ前の手順での割り算での余りr_{n-1}でこれが最大公約数Gとなります。
ここで最大公約数以外で割り切れてしまうことはないのか?と思うかもしれませんが、最大公約数でしか割り切れないことは以下のように確かめることができます。
上記と同じような流れで整数AとBの最大公約数をGとして、AをBで割ったときの商がk、余りがrであったとすると(1)より
このことからGはA,B,rの公約数であることがわかります。
\begin{align*}A&=Bk+r\tag{*}\\[0.5em]r&=Bk-A\\[0.5em]&=G(bk-a)\end{align*}
となり、余りrはGの倍数、すなわちGを約数に持つことがわかります。このことからGはA,B,rの公約数であることがわかります。
次にBとrの最大公約数をG以外の整数G'であると考えると、(1)のように
B=G'b',\ r=Gr'\quad(b',r':互いに素な整数)
と書くことができます。これを(*)に代入すると
A=G'b'k+G'r'=G'(b'k+r')
となり、G'はAの約数でもあるから、G'もまたA,B,rの公約数であることがわかります。
ここで、GとG'についてG>G'であるとすると、G'はBとrの最大公約数であるにも関わらず、より大きいGという公約数があるということになり矛盾します。
今度はG<G'であるとすると、GはAとBの最大公約数であるにも関わらず、より大きいG'という公約数があるということになり矛盾します。
したがって、G\neq G'という仮定が間違っていることよりG=G'であり、GはA,B,rの最大公約数であるということがわかります。
この結論を互除法で登場したすべての割り算に対して適用すれば、0であるr_nを除くA,B,r_1,r_2,\cdots,r_{n-1}の最大公約数はGなので、Gより大きい数で割り切れることはなく、またr_1,r_2,\cdots,r_{n-1}はGの倍数なのでGより小さい数はそもそも登場しないため、互除法で余りが0になるのは必ず割る数r_{n-1}がGのときであることがわかります。
Share: