1 解を持つ条件——ベズーの等式
まず、そもそも整数解が存在するかどうかを判定できます。
ax+by=cが整数解を持つための必要十分条件は、gcd(a,b)がcを割り切ることです。 特にgcd(a,b)=1なら、cがどんな整数でも解が存在します。必要なことはすぐに分かります——解(x,y)が1つでもあれば、左辺ax+byはaとbの公約数gcd(a,b)で必ず割り切れるので、それに等しい右辺cも割り切れていなければなりません。本題は十分性、つまり「割り切れさえすれば本当に解が作れる」ほうです。
これは互除法を「逆向きにたどる」ことで具体的に確かめられます。互除法の各ステップを逆にたどっていくと、gcd(a,b)そのものをaとbの整数係数の和として書く式(ベズーの等式ax+by=gcd(a,b))が作れるのです。実際に1071x+1029y=21の特殊解を作ってみます。互除法の計算は前回の記事の通りです。
- 1071=1×1029+42
- 1029=24×42+21
- 42=2×21+0
これを下から一つずつ、余りについて逆に解いていきます。
21=1029−24×42
次に42=1071−1029を代入します。
21=1029−24×(1071−1029)=25×1029−24×1071
つまり1071×(−24)+1029×25=21です。c=21はちょうどgcd(1071,1029)そのものなので、これがそのまま特殊解(x0,y0)=(−24,25)になります。cがgcdの倍数(たとえばc=63=3×21)であれば、この特殊解を3倍すればよいだけです。
2 一般解——特殊解に「ずれ」を足す
特殊解が1つ見つかれば、あとは全部の解を機械的に書き下せます。d=gcd(a,b)、(x0,y0)を特殊解とすると、一般解は
x=x0+dbt,y=y0−dat(t は任意の整数)
と表せます。tを1ずらすごとにxがb/dだけ増え、yがa/dだけ減ることで、ax+byの値がちょうど打ち消し合って変わらないという仕組みです。符号の付け方(+bt/−atか−bt/+atか)はどちらでも構わず、流儀の違いに過ぎません。
閑話休題:ダイ・ハード3の水差しパズル 映画『ダイ・ハード3』に、爆弾を止めるために「3ガロンの容器と5ガロンの容器だけを使って、正確に4ガロンの水を作れ」という有名な場面があります。ぴったり同じ発想のパズルは古くから数学者にも親しまれてきました。3リットルと5リットルの容器だけで
4リットルを量れるかを考えてみましょう。
これができる理由は、まさにgcd(3,5)=1が4を割り切るからです。3x+5y=4には整数解(x,y)=(3,−1)があります(3×3+5×(−1)=4)。ここで負の係数は「その容器で何回汲み出すか」に対応していて、実際の操作——5Lを満たして3Lへ移し、3Lを空けてまた移し、を繰り返す一連の手順は、このベズーの等式を鍋と桶で実演しているにすぎません。一方、容器が6Lと9Lだったらどうでしょうか。gcd(6,9)=3で、これは4を割り切らないので、6x+9y=4に整数解はなく、どう組み合わせても4Lを作ることはできません(作れるのは3の倍数の量だけです)。整数論のこの一事実が、映画の脚本を裏で支えていたわけです。