定理辞典📖 定理辞典

ユークリッドの互除法

ユークリッドの互除法

a=bq+ra=bq+r のとき gcd(a,b)=gcd(b,r)\gcd(a,b)=\gcd(b,r)。割り算をくり返して最大公約数を求める。

主張

22 つの正の整数 a,ba,b(a>ba>b)の最大公約数 gcd(a,b)\gcd(a,b) は、aabb で割った余り rr を使って、より小さい組の最大公約数 gcd(b,r)\gcd(b,r) に置きかえられるよ。これを「余りが 00 になるまで」くり返すと、最後に割り切れたときの「割る数」(=最後の 00 でない余り)がそのまま最大公約数になる。たとえば gcd(18,12)\gcd(18,12)18=12×1+618=12\times1+6 から gcd(12,6)\gcd(12,6) に、12=6×2+012=6\times2+0 で割り切れて答えは 66。素因数分解をしなくても最大公約数が速く求まる。これがいちばんの値打ちだね。

a=bq+r (0r<b)  gcd(a,b)=gcd(b,r)a=bq+r\ (0\le r<b)\ \Longrightarrow\ \gcd(a,b)=\gcd(b,r)
1266
18×1218\times12 を大きい正方形から順にしきつめると、最後は一辺 66 の正方形でぴったり。この 66gcd(18,12)\gcd(18,12) だよ。

成り立つ条件

a,ba,b は正の整数。aabb で割った商 qq と余り rra=bq+ra=bq+r0r<b0\le r<b で決まる。割るたびに余り rr は前の割る数より必ず小さくなるので、操作は有限回で必ず終わる(余りはいつか 00 になる)。図では a×ba\times b の長方形を「入るかぎり大きい正方形」で順にしきつめることが、この割り算のくり返しに対応するよ。

証明(なぜ成り立つ?)

a=bq+ra=bq+r から「a,ba,b の公約数の集合」と「b,rb,r の公約数の集合」がぴったり一致することを示す。集合が同じなら最大公約数も同じ。

  1. 1

    aabb で割った商を qq、余りを rr とするよ。下の式のように移項すれば、余り rraabb で表せる。この 22 つの見方を行き来して、公約数が移り合うことを見ていこう。

    a=bq+r(r=abq)a=bq+r\quad(\,r=a-bq\,)
  2. 2

    aabb の公約数 dd を考えると、ddaabb も割るから、その差 r=abqr=a-bq も割る。つまり a,ba,b の公約数は、そのまま b,rb,r の公約数でもあるんだ(da, dbdrd\mid a,\ d\mid b\Rightarrow d\mid r)。

  3. 3

    逆に bbrr の公約数 dd なら、ddbbrr も割るから、a=bq+ra=bq+r も割る。つまり b,rb,r の公約数は、そのまま a,ba,b の公約数でもある(db, drdad\mid b,\ d\mid r\Rightarrow d\mid a)。

  4. 4

    両方向が言えたので「a,ba,b の公約数」と「b,rb,r の公約数」は完全に同じ集合。だから最大公約数も等しい(下の式)。組を小さくしながらこれをくり返し、余りが 00 になって bb' で割り切れたとき、その割る数 bb' が最大公約数だよ。

    gcd(a,b)=gcd(b,r)\gcd(a,b)=\gcd(b,r)

最大公約数そのものに「逆」は無いけれど、互除法は逆向きにもたどれる。gcd(a,b)=g\gcd(a,b)=g のとき、割り算の式を下からさかのぼって代入していくと、ax+by=gax+by=g を満たす整数 x,yx,y を作れる(一次不定方程式の解法・拡張ユークリッドの互除法)。「最大公約数を求める道具」が、そのまま「ax+by=gax+by=g を解く道具」にもなるんだ。

補足・つまずきポイント

つまずきやすいのは答えの読み方。最大公約数は「余りが 00 になった割り算の割る数」=最後の 00 でない余り、であって「最後の余り 00」ではないよ。また gcd(a,b)=gcd(b,r)\gcd(a,b)=\gcd(b,r) で組がどんどん小さくなるのがしくみの心臓部。図で「最後にしきつめた正方形の一辺」が最大公約数になるのと同じことだね。

関連する定理

見て確かめる

言葉で読んだら、動くアニメと自分の手で確かめてみよう。

使いどころ

この定理が、実際の問題でどう効くのかを見てみよう。