Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

乗算表(乗法表)を用いて一次合同方程式を解く

乗算表(乗法表)

ある法 (mod) における剰余類ごとの掛け算をまとめた乗算表(乗法表)を用意しておくと計算するときに便利です。特に合同式の割り算をするときには重宝します。mod7 における乗算表は次のようになります。

Excel で作成したmod7の合同式乗算表

たとえば x4×5(mod7) を求めたいときは、対応する数字が交差するところを見ます。6 という数字があるので、x6(mod7) であることがわかります。もちろん合同式なので実際には
C4×C5=C6(mod7)
という計算をしているわけで、C6 に属する
x8,1,6,13,20,(mod7)
のどれもが答えとなります。普通は一番小さな正数を代表に選んで答えますが、合同式の計算は剰余類同士の演算であることは常に頭に入れておく必要があります。

一次合同方程式

x4×5(mod7) のような掛け算の場合は、わざわざ表など使わなくても 4×5=207 で割れば 6 余ることはすぐにわかるので、乗算表の有難味はほとんどありません。乗算表は主に割り算で用います。たとえば合同式で 5÷3 という割り算をすることは、
3x5(mod7)
を満たすような x を求めるということです。このような方程式を一次合同方程式(linear congruence equation)とよびます。上の方程式を乗算表を使って解いてみます。まず黄色く塗られた部分の 3 という数字のある行(または列)から 5 という数字を見つけます。対応する列(または行)が 4 なので、解は x4(mod7) であることがわかります。

乗算表(乗法表)を用いた合同方程式の解き方

つまり合同式では
5÷34(mod7)
という計算式が成り立つのです。このあたりの感覚は最初のうちは戸惑いますが、訓練を重ねるうちに慣れてきます。しかし 6÷2 のような計算、すなわち
2x6(mod7)
の解は(両辺の数字が等しければもちろん合同なので)、乗算表を用いなくても x3(mod7) であることがわかりそうな気がします。mod7 においてはそうしても構わないのですが、一般的にはこのような解き方ができるのかどうか注意する必要があります。というのは、C3 以外に方程式を満たす解が存在する可能性があるからです。

乗算表を眺めると、mod7 においては各行・各列で重なっている数字、欠けている数字がないので、全ての類同士で割り算が可能であることがわかります。そういう点で mod7 はとても性質が良くて扱いやすい法なのです。しかし法の選び方によっては、合同方程式の解が常があるとは限らないし、また解がひとつの類に定まらないこともあります。

6 を法とする合同方程式

 6 を法とする合同方程式を考えてみます。mod6 の乗算表は次のようになります。

Excelで作成した合同式mod6乗算表

比較のために mod7 乗算表も再掲しています。mod7 乗算表の各行では 0 から 6 の数字が一通り現れていますが、mod6 乗算表では同じ数が周期的に現れる行が存在しています。するとたとえば
2x4(mod6)
という合同方程式は

x2,5(mod6)
という複数の解をもつことになります。

合同式2x≡4の解

また 2x5(mod6) という合同方程式を解こうとしても、2 に乗じて 5 になるような数は乗算表のどこにも見当たらないので「解なし」ということになります。このように合同方程式では、選んだ法によって解が存在しなかったり不定であったりする場合があるのですが、そこにはもちろん法則があるので、これから丁寧に調べていきます。

合同式の両辺を割ることのできる条件

そこでまず普通の等式と同じように合同式の両辺を同じ数で割ってもよいのかどうかを考えます。先ほどの例の
2x4(mod6)
という合同方程式で両辺を 2 で割って
x2(mod6)
としてしまうと 2 つあるうちの一方の解しか得られないので明らかに誤りです。しかし法を 7 に変えて
2x4(mod7)
という合同方程式であれば、
x2(mod7)
として全く問題ありません。選んだ法によって、どうしてこのような違いが生じてしまうのでしょう。それについて述べているのが次の定理です。

【定理C5】cacb(modm) が成り立つとき
(1) (c,m)=1 であれば ab(modm)
(2) (c,m)=d>1 であれば ab(modmd)

【証明】証明には以前に学んだ定理 A11

(a,b)=1,a|bca|c
を用います。cacb(modm) なので、
m|c(ab)
(c,m)=1 のときは定理 A11 より
m|abab(modm)
(c,m)=d>1 のとき
c=dc,m=dm
とおくと (c,m)=1 なので
dm|dc(ab)(modm)m|c(ab)(modm)m|ab(modm)ab(modm)
となります。(証明終)

この定理は cm が互いに素である場合のみ、両辺を c で割っても合同関係が維持されることを述べています(互いに素でなければ法を m/d に変えて合同式が成り立ちます)。再び先ほどの
2x4(mod6)
という合同方程式を考えると、
(c,m)=(2,6)1
なので両辺を 2 で割ることはできません。しかし
2x4(mod7)
であれば、
(c,m)=(2,7)=1
ですから、両辺を 2 で割って
x2(mod7)
とすることができます。一般に
cxca(modm)
という合同方程式を考えたときに、m が素数でれば、どのような c とも互いに素な関係にあるので、合同方程式の両辺を c で割ることができます。一方で m が合成数であるときは、m と互いに素ではない c については、合同方程式の両辺を c で割ることはできないのです。

n元一次不定方程式の定義

乗算表を用いれば一次合同方程式は簡単に解けますが、現実的には法が小さい場合にのみ有効な方法です。たとえば mod123 の乗算表を作ろうと考える人はさすがにいないでしょう。そこで、これからしばらくは一次合同方程式
axb(modm)
の一般的な解法を調べていくことにします。上式は
axb|m
を意味するので、整数 y を導入すると
axb=myaxmy=b
と表せるので、一次合同方程式とは二元一次不定方程式に他ならないということになります。まずは不定方程式の定義を載せておきます。

[定義 C5] a1,a2,,kZ を係数とする方程式
a1x1+a2x2++anxn=kn元一次不定方程式といいます。

ちなみに n元一次不定方程式を英語で書くと linear indeterminate equation with n-unknowns です。または古代アレクサンドリアの数学者ディオファントスにちなんでディオファントスの不定方程式とよばれることもあります。

不定方程式 ax + by = (a, b)

まず最初に次のような二元一次不定方程式
ax+by=g=(a,b)
を考えます。すなわち定数項が係数 a,b の最大公約数となっているという極めて特殊な形の不定方程式ですが、この方程式には必ず整数解が存在するという定理が合同方程式を解くための重要な鍵となります。

【定理C6】g=(a,b) とすると、二元一次不定方程式
ax+by=gを満たす整数 x,y が必ず存在する。

【証明】本講座の序盤で学んだユークリッドの互除法を用いて証明します。
a=a1,b=a2 とおくと、
a1=a2q1+a3(0a3<a2)(1)a2=a3q2+a4(0a4<a3)(2)a3=a4q3+a5(0a5<a4)(3)an1=anqn1+an+1(0an+1<an)an=an+1qn
のように表せて、an+1a1a2 の最大公約数になります:
(a1,a2)=(a2,a3)=(a3,a4)==(an,an+1)=an+1
すなわち g=an+1 となります。(1) より
(4)a3=a1a2q1
を (2) に代入すると
(5)a4=a1q2+a2(1+q1q2)
(4) と (5) を (3) に代入すると
a5=a1(1+q2q3)a2(q1+q3+q1q2q3)
となります。これを繰り返していけば、an+1a1a2 で表すことができます。すなわち
an+1=a1x+a2y(xZ,yZ)
したがって ax+by=c を満たす解が必ず存在します。(証明終)

定理 C6 はいわゆる存在定理なのですが、その証明自体が具体的に解を求める手順になっています。この方法によって 1 組の解は求められますが、それを用いて不定方程式の一般的な解を得るためには以下の定理を用います。

[定理 C7] g=(a,b),a=ga,b=gb とすると
ax+by=g の一般解は1組の整数解 x0,y0 を用いて
x=x0+bk,y=y0ak,(kZ)で与えらる。

[証明] x0,y0 は方程式の解なので、
ax+by=gax0+by0=g
が成り立ちます。両辺を差し引いて
a(xx0)+b(yy0)=0
a=ga,b=gb を代入すると
a(xx0)+b(yy0)=0
(a,b)=1 より、b|xx0 なので
xx0=bk,yy0=akx=x0+bk,y=y0ak
ごく簡単な例をひとつだけ載せておきます。
35x+19y=1
ユークリッドの互除法より
35=19×1+1619=16×1+316=3×5+1
つまり 3519 は互いに素(最大公約数が 1)となっています。
a=35,b=19 とおいて上の式を書き直すと
a=b+16(1)b=16+3(2)16=3×5+1(3)
(1) より 16=ab を (2) に代入すると
3=2ba(4)
16=ab と (4) を (3) に代入して
6a11b=1
したがって
x0=6,y0=11
という 1 組の解が得られます。定理 C7 より一般解は
x=6+19k,y=1135k
となります。

不定方程式 ax + by = c が解をもつ条件

定理 C6 では右辺が a,b の最大公約数のときに解をもつというものでしたが、この条件はもう少しだけ緩めることができます。

【定理C8】二元一次不定方程式
ax+by=c(a,b,cZ)が整数解 x,y をもつための必要十分条件は (a,b)|c

【証明】
まずは必要条件を示します。
ax+by=c が整数解 x,y をもつとき、ax+by は整数となります。
(a,b)|a,(a,b)|b
なので、定理 A3 より
(a,b)|ax+by
すなわち (a,b)|c となります。

次は十分条件を示します。
(a,b)|c が成り立っているとき、(a,b)=g とおくと定理 C6 より
ax+by=g
を満たす x,y が存在しています。また、(a,b)|c なので c=gc となるような c も存在します。そこで上の式に c を掛けると
axc+byc=gca(cx)+b(cy)=c
となって、x=cx,y=cy という解が存在します。(証明終)

aとmが互いに素である方程式に帰着

一元一次合同方程式と二元一次不定方程式は同等であって、その表現の仕方が異なるだけです。今回は前回までに得た定理等を用いて合同式による表現を見ていきます。まずは次の定理を証明します。

【定理C9】(a,m)=g とすると、一元一次合同方程式
axb(modm)g|b のときに限って解をもち、
axb(modm)に帰着する。ただし a=ag,b=bg,m=mg です。

【証明】axb(modm) なので
axb=my(yZ)
と表せます。すなわち
(1)axmy=b
となるので、前回記事の定理 C8

ax+by=c(a,b,cZ) が整数解をもつ  (a,b)|c

より、(a,m)|b のときに限って解をもちます。また、
(a,m)=g,a=ag,b=bg,m=mg
とおいて (1) に代入すると
axmy=b
となるので、
axb(modm)
を解くことに帰着します。(証明終)

この定理は全ての一元一次合同方程式が (a,m)=1 すなわち am が互いに素となるような方程式に帰着できることを示しています。したがって、(a,m)=1 となるような合同方程式の解き方を知ることができれば、全ての一元一次合同方程式を解くことができるようになるということです。

一元一次合同方程式の解の個数

(a,m)=1 であれば解は1つ、そうでなければ g 個の解をもつ、ということを述べているのが次の定理です。

【定理C10】axb(modm)g|b のときに限って解をもち、
(1) (a,m)=1 であれば、唯1つの解をもつ
(2) (a,m)=g>1 であれば g 個の解をもち、その一般解は合同方程式を満たすある1つの解 x0 を用いて
x=x0+kmg(k=0,1,,m1) で与えられる。

【証明】g|b のときに限って解をもつことは【定理9】で証明しました。

(1) axb(modm) より
axmy=b(yZ)
と表せます。(a,m)=1 なので 定理 C8

ax+by=c(a,b,cZ) が整数解をもつ  (a,b)|c

によって、この方程式には整数解が存在するので、それを x0 とおくと一般解は
x=x0+km(yZ)
と表すことができます。したがって
xx0(modm)
となり、合同方程式の解は全て同じ剰余類に属することになります。

(2) g|b なので、【定理C8】より axb(modm) は解をもちます。その中の解の1つを x0 , 一般解を x とすると
{axb(modm)ax0b(modm)
なので、
axax0(modm)
が成り立ちます。ここで以前に証明した定理 C5

cacb(modm) が成り立つとき
(c,m)=g>1ab(modmg)

を用いると、
xx0(modmg)
が成り立つことがわかります。したがって
x=x0+kmg
と表せますが、modm で相異なる解となるのは
k=0,1,,m1
のときです (k=0k=m は同じ類に属します)。よって解の個数は g 個あり、その解は
x=x0+kmg(k=0,1,,m1)
で与えられます。(証明終)

一元一次合同方程式の具体例

簡単な合同方程式を解いてみます。
(1)26x30(mod8)
g=(a,m)=(26,8)=2 なので、
(2)13x15(mod4)
という合同方程式に帰着します。ここで
(3)4x4(mod4)
という合同式は当然成り立つので、(2) から (3) × 3 を引いて
x3(mod4)
という1つの解を得ます。これを x0 とすると一般解は
x=x0+kmg(k=0,1,,m1)
で与えられます。m/g=8/2=4 なので mod8 では
x3,7(mod8)
となります。これは剰余類 C3 の要素 x=3+8k、および剰余類 C7 の要素 x=7+8k が全て 26x30(mod8) を満たすということです。

【次の数論講座】≫ 乗法的関数

エクセルや数学に関するコメントをお寄せください