🔷 群・環・体からガロア理論へ
第2章 素因数分解の世界 / STAGE 4 ― 余りのある割り算 ―
クリア 0 / 8
第2章 STAGE 4

余りのある割り算

互除法で素数が素元であることを示す
🎯 ミッション
互除法の最後の余りが最大公約数になる理由を説明し、ax+py=1 を作って、素数が素元であることを証明しよう。ガウス整数でも余りのノルムを割る数のノルムより小さくできる理由(√2/2 の距離)を説明できれば合格。
未達成
ねこ博士
前のステージで、既約元がどれも素元(p が ab を割り切れば a か b を割り切る数)なら、素因数分解はただ1通りになると分かった。今日はいよいよ、整数の素数が素元であることを証明する。そして同じ方法がガウス整数の世界でも使えることを確かめる。そうすれば、1つ目の謎を解く道具がそろうんだ。おまけに、第1章で存在だけ確かめた mod p の逆数を、実際に計算する方法も手に入る。道具は割り算だ。17 を 5 で割ると、どうなるかな?
うさ美
17=5×3+2 です。商が 3、余りが 2。余りは、割る数の 5 より小さくなります。5 の倍数 0, 5, 10, 15, 20, … を並べると、17 は 15 と 20 の間にあるので、15 を引いた残り 2 は 5 より小さくなります。
ねこ博士
そう。どんな整数 a と正の整数 b でも、b の倍数のうち a を超えない最大のものを qb とすれば、a=qb+r で余り r は 0 以上 b 未満になる。これが余りのある割り算だ。これをくり返すのがユークリッドの互除法だよ。84 と 30 で、大きいほうを小さいほうで割り、次は割った数を余りで割り…と、余りが 0 になるまで続けてごらん。
うさ美
84=30×2+24、30=24×1+6、24=6×4+0。余りは 24, 6, 0 です。余りは割る数より小さいので、どんどん小さくなって、必ず 0 で止まります。最後の 0 でない余りは 6 で、84 と 30 の最大公約数も 6 です。
ねこ博士
そう。最後の 0 でない余りは、いつでも2つの数の最大公約数になる。その理由を確かめよう。84 と 30 の公約数と、30 と 24 の公約数を比べてごらん。24=84−30×2 だね。
うさ美
d が 84 と 30 の公約数なら、84 も 30×2 も d で割り切れるので、差の 24 も d で割り切れます。だから d は 30 と 24 の公約数です。逆に d が 30 と 24 の公約数なら、84=30×2+24 も d で割り切れるので、d は 84 と 30 の公約数です。つまり、84 と 30 の公約数と、30 と 24 の公約数は、まったく同じです。
ねこ博士
そう。割り算を1回するたびに数の組は変わるけれど、公約数の集まりは変わらない。最後はどうなるかな?
うさ美
(84, 30) → (30, 24) → (24, 6) → (6, 0) と、公約数の集まりはずっと同じです。0 はどんな数でも割り切れるので、6 と 0 の公約数は 6 の約数そのもので、1, 2, 3, 6 です。いちばん大きいのは 6。だから 84 と 30 の最大公約数は、最後の 0 でない余りの 6 です。どんな2つの数でも、同じ理由で言えます。
余りのある割り算:a=qb+r(0≦r<b) 互除法:84=30×2+24、30=24×1+6、24=6×4+0 d が a と b の公約数 → r=a−qb も d で割り切れる → d は b と r の公約数 d が b と r の公約数 → a=qb+r も d で割り切れる → d は a と b の公約数 → 公約数の集まりは割り算のたびに変わらず、最後の (6, 0) の公約数は 6 の約数。最後の 0 でない余り=最大公約数
ねこ博士
互除法には、長方形を使った見方もある。横 84・縦 30 の長方形から、1辺 30 の正方形をできるだけ切り取ると、残りは横 24・縦 30 の長方形だ。そこから1辺 24 の正方形を切り取り…とくり返すと、最後の正方形の1辺が最大公約数になる。
うさ美
最後の正方形は、ひとつ前の長方形をぴったり埋めます。その長方形の辺で、さらに前の長方形が埋まり…とさかのぼると、最初の長方形全体が最後の正方形でぴったり埋まります。だから最後の正方形の1辺は、84 も 30 も割り切ります。
互除法を長方形で見る。横 a・縦 b の長方形から、短いほうの辺を1辺とする正方形をできるだけ多く切り取る(1回の割り算の商が切り取る個数、余りが残りの幅)。残った長方形で同じことをくり返し、最後に残った正方形(いちばん濃い色)の1辺が a と b の最大公約数。その正方形を並べると、元の長方形がぴったり埋まる
ねこ博士
そう。互除法には、もう1つ大事な使い道がある。最後の余り 6 を、途中の式を下からたどって、84 と 30 だけで書いてごらん。
うさ美
30=24×1+6 から 6=30−24。84=30×2+24 から 24=84−30×2。入れると 6=30−(84−30×2)=30×3−84。6=84×(−1)+30×3。84 と 30 に整数を掛けて足したら、最大公約数が作れました。
ねこ博士
そう。上からたどっても分かる。最初の余り 24 は 84−30×2 で、「84×整数+30×整数」の形だ。次の余りは「ひとつ前の割る数−商×ひとつ前の余り」だから、どうなるかな?
うさ美
割る数も余りも「84×整数+30×整数」の形なら、その差もやはりその形です。だから余りは全部その形で、最後の余り、つまり最大公約数も 84x+30y(x, y は整数)の形に書けます。どんな2つの整数でも同じです。
余りを「ax+by」の形で書きながら互除法を進める。左の列が割り算、右の列がその余りを a と b で書いた形。1行目は a=a×1+b×0、2行目は b=a×0+b×1。次の行は「2行前−商×1行前」で作るので、x と y も同じ計算で求まる。最後の 0 でない余り(最大公約数)の行に、ax+by の x と y が出る
ねこ博士
よく見抜いたね。さあ、p を素数、a を p で割り切れない整数としよう。何が言えるかな?
うさ美
p の約数は 1 と p だけで、p は a を割り切らないので、p と a の公約数は 1 だけです。だから互除法の最後の余りは 1 で、ax+py=1 となる整数 x, y が作れます。……この式を mod p で見ると、py は p の倍数なので ax≡1 (mod p) です。x は、第1章の mod p の世界での a の逆元です!
ねこ博士
そう。第1章では、mod p の掛け算表の各行に 1 が1回ずつ出ることから逆元があることを確かめたけれど、互除法を使うと、どんなに大きな p でも逆元を計算できる。RSA 暗号の秘密鍵 d も、e×d≡1 (mod φ(n)) をみたす数だったから、同じ計算で求まる。たとえば φ(n)=20、e=3 なら?
うさ美
20=3×6+2、3=2×1+1。逆にたどると 1=3−2=3−(20−3×6)=3×7−20。だから 3×7≡1 (mod 20) で、d=7 です。確かに 3×7=21 は 20 で割ると 1 余ります。
ねこ博士
その通り。では本題に戻ろう。ax+py=1 の両辺に b を掛けてごらん。そして、p が ab を割り切るとしよう。
うさ美
abx+pby=b。ab は p で割り切れるので abx も p で割り切れ、pby も p で割り切れます。だから左辺は p で割り切れて、右辺の b も p で割り切れます。つまり、p が ab を割り切るとき、p が a を割り切らなければ b を割り切ります。素数は素元です! 前のステージの話と合わせると、整数の素因数分解はただ1通りです。
p が素数で a を割り切らない → p と a の最大公約数は 1 → 互除法で ax+py=1 両辺に b を掛ける:abx+pby=b p が ab を割り切るなら、左辺の abx も pby も p で割り切れる → 右辺の b も p で割り切れる → 素数は素元 → 既約元がどれも素元 → 整数の素因数分解はただ1通り
ねこ博士
その通り。この証明で本当に使った道具は何だったかな?
うさ美
余りのある割り算です。余りが割る数より小さくなるので、互除法が必ず止まって、ax+py=1 が作れました。
ねこ博士
そう。だから、ガウス整数でも余りのある割り算ができれば、同じ証明が通る。複素数には大小がないから、「小さい」はノルムで測ろう。z を w で割って z=qw+r、N(r)<N(w) にできればいい。まず z÷w を計算する。分母の w=3+2i に 3−2i を掛けると、(3+2i)(3−2i)=9+4=13 で実数になる。z=10+7i として、z÷w を求めてごらん。
うさ美
分母と分子に 3−2i を掛けて、(10+7i)(3−2i)/13=(30−20i+21i−14i²)/13=(44+i)/13 です。44/13≒3.38、1/13≒0.08 なので、z÷w≒3.38+0.08i。ガウス整数ではありません。
ねこ博士
そこで、z÷w にいちばん近いガウス整数を商 q に選ぶ。q=3 だね。余り r=z−qw を計算してごらん。
うさ美
qw=3(3+2i)=9+6i。r=(10+7i)−(9+6i)=1+i で、N(r)=2 です。N(w)=13 より小さくなりました。これが、いつでもうまくいくんですか?
ねこ博士
それを確かめよう。z÷w は平面のどこかの点で、ガウス整数の点は1辺 1 の正方形の角に並んでいる。z÷w にいちばん近い角を q に選ぶと、z÷w と q の距離はどこまで大きくなりうるかな?
うさ美
正方形の中で、いちばん近い角がいちばん遠くなるのは、真ん中の点のときです。真ん中から角までは、三平方の定理で √((1/2)²+(1/2)²)=√2/2 です。だから z÷w と q の距離は √2/2 以下です。余り r=z−qw=w×(z÷w−q) の長さは、掛け算で長さが掛け算になるので |w|×(√2/2 以下)。ノルムは長さの2乗なので、N(r)≦N(w)×1/2<N(w)。余りは必ず小さくできます!
ガウス整数の余りのある割り算。z÷w(赤)を、まわりのガウス整数の格子点(1辺 1 の正方形の角)と一緒に描いた。いちばん近い格子点を商 q(紫)に選ぶ。z÷w と q の距離は、正方形の真ん中に来たときでも √2/2(点線の円の半径)以下。だから余り r=z−qw のノルムは、いつでも N(w) の半分以下になる
ねこ博士
よく確かめたね。ガウス整数でも余りのある割り算ができるから、互除法が使える。割るたびに余りのノルムが小さくなるから、必ず止まる。そして、整数のときと同じ理由で、最後の 0 でない余り d は2つの数の公約数で、しかも「z×(ガウス整数)+w×(ガウス整数)」の形に書ける。では、π をガウス整数の既約元、a を π で割り切れないガウス整数としよう。π と a で互除法をすると、最後の余り d について何が言えるかな?
うさ美
d は π を割り切るので、π=d×c と書けます。π は既約元なので、d か c のどちらかは単数です。もし c が単数なら、d は π に単数を掛けただけの数で、d は a を割り切るので、π も a を割り切ってしまいます。だから d が単数です。d に、掛けて 1 になる相手を掛ければ、πx+ay=1 の形の式が作れます。あとは整数と同じで、両辺に b を掛ければ、π が ab を割り切るとき b を割り切ります。ガウス整数の既約元は、どれも素元です!
ねこ博士
その通り。だからガウス整数の素因数分解も、順番と単数の違いを除いてただ1通りになる。整数の一意性も、ガウス整数の一意性も、「余りのある割り算ができる」という1つの性質から出てきたんだ。次のステージでは、この一意性を使って、いよいよ1つ目の謎、2つの平方数の和の謎を解こう。
【このステージの成果】 余りのある割り算:a=qb+r(0≦r<b)。くり返すのがユークリッドの互除法 割り算のたびに公約数の集まりは変わらない → 最後の 0 でない余りが最大公約数(長方形を正方形で切り取る図でも見える) 余りはどれも「ax+by」の形 → 最大公約数も ax+by。p が素数で a を割り切らなければ ax+py=1(x は mod p での a の逆元。RSA の秘密鍵もこれで求まる) 両辺に b を掛けて abx+pby=b → 素数は素元 → 整数の素因数分解はただ1通り ガウス整数の割り算:z÷w にいちばん近い格子点を q にすると、距離は √2/2 以下 → N(r)≦N(w)/2 ガウス整数でも互除法が使え、既約元はどれも素元 → ガウス整数の素因数分解もただ1通り

確認クイズ

Q1. 互除法の最後の 0 でない余りが最大公約数になる理由は?

Q2. 互除法で 3x+20y=1 となる整数を求めると、mod 20 での 3 の逆元は?

Q3. ガウス整数の割り算で、余り r のノルムが必ず N(w) より小さくなる理由は?