ユークリッドの互除法が成り立つ仕組みを帰納法で示す(東京都立大2018理学部第3問)

ユークリッドの互除法の証明を帰納法でやる。教科書の説明通りのことを文字に置きかえて帰納法使ったら証明できるよっていう話。

以下の問いに答えなさい。(東京都立大2018)

(1) 正の整数 p,q,fp,q,f および整数 rr が次の関係をみたしているとする。

p=fq+rp=fq+r

ただし,0 r<q0\leqq r<q とする。このとき整数 dd が pp と qq の公約数であることと,dd が qq と rr の公約数であることは同値であることを示しなさい。

(2) 正の整数 k,mk,m の最大公約数を gcd(k,m)\text{gcd}(k,m) で表す。p,qp,q を,p>qp>q をみたす正の整数とする。また,n2n\geqq2 とし,2n12n-1 個の正の整数 f1,f2,,fn1,r1,r2,,rnf_1,f_2,\cdots,f_{n-1},r_1,r_2,\cdots,r_n が次の関係をみたしているとする。

p=r1p=r_1
q=r2q=r_2
r1=f1r2+r3r_1=f_1r_2+r_3r3<r2r_3<r_2
\vdots
rn2=fn2rn1+rnr_{n-2}=f_{n-2}r_{n-1}+r_nrn<rn1r_n<r_{n-1}
rn1=fn1rnr_{n-1}=f_{n-1}r_n

このとき,gcd(p,q)=gcd(rj,rj+1)\text{gcd}(p,q)=\text{gcd}(r_j,r_{j+1}) (j=1,2,,n1)(j=1,2,\cdots,n-1) が成り立つことを jj に関する数学的帰納法で示しなさい。

(3) pp と qq を互いに素な正の整数とする。このとき,ap+bq=1ap+bq=1 をみたす整数 a,ba,b が存在することを示しなさい。

公約数を示す

(1)から始めます。

まず,p=fq+rp=fq+r って p=p=割る数×商+余り の式だってことに気づくのが大事。

整数 dd が pp と qq の公約数であるということは,pp は dd の倍数であり,qq も dd の倍数であるということです。

p=dpp=dp’q=dqq=dq’

とすると
p=fq+rp=fq+r
dp=fdq+rdp’=fdq’+r
r=dpfdqr=dp’-fdq’
r=d(pfq)r=d(p’-fq’) ・・・①

右辺が dd の倍数であるということは左辺も dd の倍数でなければイコール関係は成り立ちません。よって

r=drr=dr’ とすると
p=fdq+drp=fdq’+dr’
p=d(fq+r)p=d(fq’+r’) ・・・②

①,②より,整数 dd が pp と qq の公約数であることと,dd が qq と rr の公約数であることは同値である。(証明終わり)

ユークリッドの互除法

(2)に進みます。

割る数×商+余りの式っぽいけど,何で並べてるのか。

これ,ユークリッドの互除法。

ユークリッドの互除法は,はじめ最大公約数を求める方法として学びます。

たとえば,506 と 437 の最大公約数を求めるなら

506=4371+69506=\underline{437}\cdot1+\underline{69}
437=696+23\underline{437}=69\cdot6+\underline{23}
69=233+0\underline{69}=\underline{23}\cdot3+0

最大公約数は 2323

最後,余りが 0 になったら終わりでしたね。

これを文字に置きかえます。507 ⇒ r1r_1,437 ⇒ r2r_2 として,さらに商を f1f_1,余りを r3r_3 とすると

r1=r2f1+r3r_1=r_2f_1+r_3
r2=r3f2+r4r_2=r_3f_2+r_4
r3=r4f3+0r_3=r_4f_3+0

となり,問題文の式と同じになることが確認できます。そして r4r4 が最大公約数です。

この式,そういう意味なんだ。
これが分かってないと(3)が解けない。

こうして,ユークリッドの互除法から言えば gcd(p,q)=rn\text{gcd}(p,q)=r_n ということになります。

式の意味が分かったところで,あとは数学的帰納法で最大公約数についての証明を書いていきましょう。

gcd(p,q)=gcd(rj,rj+1)\text{gcd}(p,q)=\text{gcd}(r_j,r_{j+1}) (j=1,2,,n1)(j=1,2,\cdots,n-1) ・・・(*)

として

[I] j=1j=1 のとき

p=r1p=r_1q=r2q=r_2 より

gcd(p,q)=gcd(r1,r2)=rn\text{gcd}(p,q)=\text{gcd}(r_1,r_2)=r_n

よって,j=1j=1 のとき(*)は成り立つ。

[II] j=kj=k として(*)が成り立つと仮定すると,j=k+1j=k+1 のとき

問題文の式を kk を用いて表すとこのようになります。

rk=fkrk+1+rk+2r_k=f_kr_{k+1}+r_{k+2}

kk を jj に置きかえると

rj=fkrj+1+rj+2r_j=f_kr_{j+1}+r_{j+2}

この式から,gcd(rj,rk+j)=gcd(rk+j,rk+j)\text{gcd}(r_j,r_{k+j})=\text{gcd}(r_{k+j},r_{k+j}) が成り立ちます。

さらに,式を進めていくと

rj=fjrj+1+rj+2r_j=f_jr_{j+1}+r_{j+2}
rj+1=fjrj+2+rj+3r_{j+1}=f_jr_{j+2}+r_{j+3}
\vdots
rn1=fn1rnr_{n-1}=f_{n-1}{r_n}

となります。

結局,式を j=kj=k から始めようが,k+1k+1 から始めようが行きつくところは同じってこと。

よって

gcd(p,q)=gcd(rk,rk+1)=gcd(rk+1,rk+2)=rn\text{gcd}(p,q)=\text{gcd}(r_k,r_{k+1})=\text{gcd}(r_{k+1},r_{k+2})=r_n

gcd(rk+1,rk+2)=rn\text{gcd}(r_{k+1},r_{k+2})=r_n であるから,j=k+1j=k+1 において,(*)が成り立つ。

[I],[II]より,j=1,2,,n1j=1,2,\cdots,n-1 について,gcd(p,q)=gcd(rj,rj+1)\text{gcd}(p,q)=\text{gcd}(r_j,r_{j+1}) が成り立つ。(証明終わり)

ユークリッドの互除法が成り立つ仕組み

(3)に入ります。

これも,19x+11y=119x+11y=1 の整数解を求めよ,みたいな問題で見たことあるよね。
解の一つを見つけるヤツか。
解の一つを見つけるときに,ユークリッドの互除法を使うと良かった。
pp を 19,qq を 11 として,x,yx,y を a,ba,b に置きかえると ap+bq=1ap+bq=1 となる。つまり,整数 a,ba,b が存在するってのは,ユークリッドの互除法使って解の一つとなる整数を示すってこと。

ajrj+bjrj+1=1a_jr_j+b_jr_{j+1}=1 ・・・(*)

として,(2)の関係を満たすとする。

[I] j=1j=1 のとき

p=r1p=r_1
q=r2q=r_2
r1=f1r2+r3r_1=f_1r_2+r_3r3<r2r_3<r_2
\vdots
rn2=fn2rn1+rnr_{n-2}=f_{n-2}r_{n-1}+r_nrn<rn1r_n<r_{n-1} ・・・③
rn1=fn1rnr_{n-1}=f_{n-1}r_n

(2)でやったように,rnr_n が最大公約数だった。

pp と qq は互いに素だから,gcd(p,q)=1\text{gcd}(p,q)=1。つまり rn=1r_n=1

③を移項すると

rn2fn2rn1=rnr_{n-2}-f_{n-2}r_{n-1}=r_n
rn2fn2rn1=1r_{n-2}-f_{n-2}r_{n-1}=1

これを 1 rn2+(fn2)rn1=11\cdot r_{n-2}+(-f_{n-2})r_{n-1}=1 と考えると,a=1a=1b=fn2b=-f_{n-2} と見なすことができます。今回は文字に入る値はすべて整数だから,fn2f_{n-2} も何らかの整数です。

よって,(*)をみたす整数 aja_jbjb_j が存在する。

[II] j=kj=k として(*)が成り立つと仮定すると,j=k+1j=k+1 のとき

ak+1rk+1+bk+1rk+2=1a_{k+1}r_{k+1}+b_{k+1}r_{k+2}=1 ・・・④

また,(2)より
rk=fkrk+1+rk+2r_k=f_kr_{k+1}+r_{k+2}

が成り立つことを利用する。これを移項して

rkfkrk+1=rk+2r_k-f_kr_{k+1}=r_{k+2}

④に代入して

ak+1rk+1+bk+1(rkfkrk+1)=1a_{k+1}r_{k+1}+b_{k+1}(r_k-f_kr_{k+1})=1

式を整理して

ak+1rk+1+bk+1rkbk+1fkrk+1=1a_{k+1}r_{k+1}+b_{k+1}r_k-b_{k+1}f_kr_{k+1}=1
bk+1rk+(ak+1bk+1fk)rk+1=1b_{k+1}r_k+(-a_{k+1}b_{k+1}f_k)r_{k+1}=1 ・・・⑤

bk+1b_{k+1} と ak+1bk+1fk-a_{k+1}b_{k+1}f_k は何らかの整数であることは間違いないので,それぞれ aabb に置きかえることができます。

勝手に置きかえていいの?
話の最初に戻って。aabb ってのは結局,互除法使って求める解の一つだから。ここでは,その値自体を求めるんじゃなくて,その値が整数であることだけ示せればオッケーなの。実際の値が何だろうと,解の一つが見つかればそれを aabb にしようねってこと。
そうなの?
そうなの。こういうの,やってるうちに何やりたいのか分からなくなるから,ちゃんと問題文で聞かれてること確認して。

ak+1=bk+1a_{k+1}=b_{k+1}bk+1=ak+1bk+1fkb_{k+1}=-a_{k+1}b_{k+1}f_k とすると,⑤は

ak+1rk+1+bk+1rk+2=1a_{k+1}r_{k+1}+b_{k+1}r_{k+2}=1

となるので,j=k+1j=k+1 のときも(*)に当てはまる aja_j と bjb_j が存在する。

[I],[II]より,ap+bq=1ap+bq=1 をみたす整数 aabb が存在する。(証明終わり)