MathLabs

9年生

一次不定方程

整数解のみを求める一次方程式。

直観直感:2種類の硬貨でちょうどの金額を支払う

33 ドン硬貨と 55 ドン硬貨しか持っておらず、ちょうど 88 ドンを支払いたいとする。それぞれ整数枚必要なので、実質的に整数 x,y≥0x,y\ge 0 について 3x+5y=83x+5y=8 を解くことになる——実際 x=1,y=1x=1,y=1 は 3+5=83+5=8 を満たす。「どのような整数 a,b,ca,b,c に対して ax+by=cax+by=c が整数解を持ち、そのすべてをどう求めるか」という一般的な問いが、一次不定方程式の理論である。

傾き $-0.6$、切片 $1.6$ の直線。整数座標を通る格子点が示されている。
直線 3x+5y=83x+5y=8 を y=−0.6x+1.6y=-0.6x+1.6 と書き直す:整数解はこの直線が通る格子点そのものである。

中高定義と整除の判定条件

定義: 二元一次不定方程

整数 a,b,ca,b,c((a,b)≠(0,0)(a,b)\neq(0,0))による方程式 ax+by=cax+by=c で、x,y∈Zx,y\in\mathbb{Z} を満たす解 (x,y)(x,y) を求めるものを一次不定方程式と呼ぶ。

ax+by=ca,b,c∈Z, (a,b)≠(0,0)ax+by=c\qquad a,b,c\in\mathbb{Z},\ (a,b)\neq(0,0)

a,b,ca,b,c をどう選んでも解けるとは限らない:2x+4y=72x+4y=7 は左辺が常に偶数なので解を持たない。正確な判定条件は d=gcd⁡(a,b)d=\gcd(a,b) に関わる:方程式が整数解を持つのは d∣cd \mid c のときであり、かつそのときに限る。

d=gcd⁡(a,b)∣c  ⟺  ∃ x,y∈Z: ax+by=cd=\gcd(a,b)\mid c \iff \exists\, x,y\in\mathbb{Z}:\ ax+by=c
ax+by=cax+by=c の可解性
条件解を持つか?解集
d∣cd \mid cはい無限個の族:x=x0+bdt, y=y0−adtx=x_0+\frac{b}{d}t,\ y=y_0-\frac{a}{d}t
d∤cd \nmid cいいえ空集合 ∅\emptyset

発展定理と証明(教科書を超えて)

どちらも 00 ではない整数 a,ba,b に対し、au+bv=gcd⁡(a,b)au+bv=\gcd(a,b) を満たす整数 u,vu,v が存在する。

なぜ正しいのか?

これは最大公約数が単に「共通の最大の因数」であるだけでなく、実際に aa と bb の整数結合として到達可能であることを示す——これが ax+by=cax+by=c の可解性判定を成り立たせる鍵となる事実である。

証明

aa と bb の正の整数結合全体からなる集合 S={au+bv:u,v∈Z}∩Z>0S=\{au+bv : u,v\in\mathbb{Z}\}\cap\mathbb{Z}_{>0} を考える。a,ba,b はどちらも 00 ではないので SS は空でなく(∣a∣|a| または ∣b∣|b| を含む)、整列原理により SS には最小元 d=au0+bv0>0d=au_0+bv_0>0 が存在する。

d∣ad\mid a を示す:a=qd+ra=qd+r(0≤r<d0\le r<d)と割る。すると r=a−qd=a−q(au0+bv0)=a(1−qu0)+b(−qv0)r=a-qd=a-q(au_0+bv_0)=a(1-qu_0)+b(-qv_0) はそれ自体 a,ba,b の整数結合である。もし r>0r>0 なら rr は SS に属し dd より小さくなり最小性に矛盾する。よって r=0r=0、すなわち d∣ad\mid a である。aa の代わりに bb で同じ議論をすれば d∣bd\mid b も分かる。

dd は aa と bb の公約数なので d≤gcd⁡(a,b)d\le \gcd(a,b) である。逆に、aa と bb の任意の公約数 ee は au0+bv0=dau_0+bv_0=d を割り切るので e≤de\le d。e=gcd⁡(a,b)e=\gcd(a,b) とすれば gcd⁡(a,b)≤d\gcd(a,b)\le d を得る。

両方の不等式を合わせると d=gcd⁡(a,b)d=\gcd(a,b) であり、構成より d=au0+bv0d=au_0+bv_0 である。これはまさに u=u0,v=v0u=u_0,v=v_0 とするベズーの等式である。

ax+by=cax+by=c が整数解を持つのは、d=gcd⁡(a,b)d=\gcd(a,b) として d∣cd \mid c であるときであり、かつそのときに限る。このとき (x0,y0)(x_0,y_0) を一つの解とすると、すべての整数解はちょうど x=x0+bdt,  y=y0−adt  (t∈Z)x=x_0+\dfrac{b}{d}t,\ \ y=y_0-\dfrac{a}{d}t\ \ (t\in\mathbb{Z}) である。

なぜ正しいのか?

これは問題を完全に解決する:一つの整除チェックで可解性が決まり、一つでも解が見つかれば tt による一パラメータ族が他のすべての解を与える——推測は不要である。

証明

(⇒\Rightarrow)(x,y)(x,y) が整数解ならば d=gcd⁡(a,b)d=\gcd(a,b) は axax と byby の両方を割り切るので ax+by=cax+by=c を割り切る。よって d∣cd \mid c は必要条件である。

(⇐\Leftarrow)d∣cd \mid c とし、c=dec=de と書く。ベズーの等式より au0+bv0=dau_0+bv_0=d を満たす u0,v0u_0,v_0 が存在する。ee 倍すると a(u0e)+b(v0e)=de=ca(u_0e)+b(v_0e)=de=c となり、(x0,y0)=(u0e, v0e)(x_0,y_0)=(u_0e,\,v_0e) が整数解である。これで可解性が示された。

次に解 (x0,y0)(x_0,y_0) を一つ固定し、(x,y)(x,y) を他の任意の解とする。ax+by=cax+by=c から ax0+by0=cax_0+by_0=c を引くと a(x−x0)+b(y−y0)=0a(x-x_0)+b(y-y_0)=0、すなわち a(x−x0)=−b(y−y0)a(x-x_0)=-b(y-y_0) を得る。両辺を dd で割ると ad(x−x0)=−bd(y−y0)\frac{a}{d}(x-x_0)=-\frac{b}{d}(y-y_0) であり、gcd⁡(a/d, b/d)=1\gcd(a/d,\,b/d)=1 なので因子 bd\frac{b}{d} は x−x0x-x_0 を割り切らねばならない(互いに素性の標準的帰結:p∣mnp\mid mn かつ gcd⁡(p,m)=1\gcd(p,m)=1 なら p∣np\mid n)。よって x−x0=bdtx-x_0=\frac{b}{d}t となる整数 tt が存在し、代入すると y−y0=−adty-y_0=-\frac{a}{d}t を得る。

逆に、任意の整数 tt に対し x=x0+bdt, y=y0−adtx=x_0+\frac{b}{d}t,\ y=y_0-\frac{a}{d}t を ax+byax+by に代入すると ax0+by0+t(abd−abd)=c+0=cax_0+by_0+t\left(\frac{ab}{d}-\frac{ab}{d}\right)=c+0=c となり、そのような組がすべて解であることが確かめられる。したがって解の集合はちょうど x=x0+bdt,  y=y0−adt  (t∈Z)x=x_0+\dfrac{b}{d}t,\ \ y=y_0-\dfrac{a}{d}t\ \ (t\in\mathbb{Z}) である。

発展実世界での応用と具体例

ax+by=cax+by=c を解くことは単なる授業の練習問題ではない:ベズー係数を生成する拡張ユークリッドの互除法は、RSA鍵生成でモジュラー逆元を求める操作そのものであり、同じ格子点の考え方が、コンピュータグラフィックスのアルゴリズム(ブレゼンハムの線描画など)が直線がどの整数ピクセルを通るかを決める仕組みの背後にある。

例: 3x+5y=83x+5y=8 を完全に解く

3x+5y=83x+5y=8 のすべての整数解を求め、xx が最小の非負値となるものを求めよ。

解答

ユークリッドの互除法を実行する:5=1⋅3+25=1\cdot 3+2、3=1⋅2+13=1\cdot 2+1、2=2⋅1+02=2\cdot 1+0、よって gcd⁡(3,5)=1\gcd(3,5)=1 であり、これは 88 を割り切るので解が存在する。

逆代入する:1=3−1⋅2=3−1⋅(5−1⋅3)=2⋅3−1⋅51=3-1\cdot 2=3-1\cdot(5-1\cdot 3)=2\cdot 3-1\cdot 5。88 倍すると 2⋅3⋅8−1⋅5⋅8=8⋅12\cdot 3\cdot 8-1\cdot 5\cdot 8=8\cdot 1、すなわち 3⋅16+5⋅(−8)=83\cdot 16+5\cdot(-8)=8 となり、一つの解 (x0,y0)=(16,−8)(x_0,y_0)=(16,-8) が得られる。

d=1d=1 での一般解の定理より、すべての解は x=16+5t, y=−8−3tx=16+5t,\ y=-8-3t(t∈Zt\in\mathbb{Z})である。t=−3t=-3 を選ぶと x=16−15=1, y=−8+9=1x=16-15=1,\ y=-8+9=1 となり、硬貨の例と一致する。

すべての tt の中で、x=16+5t≥0x=16+5t\ge 0 は t≤−4t\le -4(x=−4x=-4)で成り立たなくなるので、最小の非負 xx は t=−3t=-3 のとき:(x,y)=(1,1)(x,y)=(1,1) である。

例: RSA鍵生成:モジュラー逆元を求める

公開指数 e=7e=7、φ(n)=40\varphi(n)=40 のRSAにおいて、7d≡1(mod40)7d\equiv 1\pmod{40} を満たす秘密指数 dd を求めよ。

解答

合同式 7d≡1(mod40)7d\equiv 1\pmod{40} は、ある整数 kk について一次不定方程式 7d−40k=17d-40k=1 と同値である。

ユークリッドの互除法:40=5⋅7+540=5\cdot 7+5、7=1⋅5+27=1\cdot 5+2、5=2⋅2+15=2\cdot 2+1、2=2⋅1+02=2\cdot 1+0、よって gcd⁡(7,40)=1\gcd(7,40)=1 であり、逆元の存在が確認できる。

逆代入する:1=5−2⋅2=5−2⋅(7−1⋅5)=3⋅5−2⋅7=3⋅(40−5⋅7)−2⋅7=3⋅40−17⋅71=5-2\cdot 2=5-2\cdot(7-1\cdot 5)=3\cdot 5-2\cdot 7=3\cdot(40-5\cdot 7)-2\cdot 7=3\cdot 40-17\cdot 7。よって 7⋅(−17)+40⋅3=17\cdot(-17)+40\cdot 3=1 となり、d≡−17(mod40)d\equiv -17\pmod{40} を得る。

標準範囲に直す:d≡−17+40=23(mod40)d\equiv -17+40=23\pmod{40}。検算:7×23=161=4×40+17\times 23=161=4\times 40+1、これでこの練習用鍵の正しいRSA秘密指数が d=23d=23 であることが確認できる。

d=gcd⁡(a,b)d=\gcd(a,b) に関するどの条件が ax+by=cax+by=c の整数解の存在を決めるか?

ベズーの等式はどのような整数の存在を保証するか?

(x0,y0)(x_0,y_0) が d=gcd⁡(a,b)d=\gcd(a,b) で ax+by=cax+by=c を満たすとき、一般解は x=x0+bdtx=x_0+\frac{b}{d}t で y=y= ?

一次不定方程を解くのに使う拡張ユークリッドの互除法は、どの暗号量を計算する標準的な方法でもあるか?

参考文献

  1. Wikipedia contributors (2024). Bézout's identity
  2. G. H. Hardy, E. M. Wright (2008). An Introduction to the Theory of Numbers