Processing math: 100%
スポンサーリンク

連立合同式の解き方と解の存在条件(法が互いに素でない場合も)

代数学

本記事の内容

本記事は、連立合同式(合同式の連立方程式)の解の存在条件とその解き方について解説する記事です。

本記事を読むに当たり、合同式について知っている必要があるため、以下の記事も合わせてご覧ください。

「合同式を解く」ことの軽い復習

端的に言えば、「合同式を解く」というのは

未知の整数が含まれている合同式に対して、その未知数を求めること。

です。
これは、合同式に限らず方程式についてもそうです。
要するに「未知数を求めること」が「解く」ということです。

「一次合同式を解く」とは?

今の話を厳密に書くと以下になります。

合同式を解く

f(x)が整数係数の多項式であるとき、合同式 f(x)0 (mod m) を満たす未知の整数xを求めることを合同式を解くという。

「合同式を解く」とは?

結局の所、合同式は解が一つの整数に定まるわけではありません。

より一般に、
f(x)0 (mod m)
という合同式に対して、x0をこの合同式の1つの解とします。
x1x0 (mod m)とすれば、
f(x1)f(x0)0 (mod m)
となります。
なぜなら、次が成り立つからです。

定理1.

a,a,b,bZmZ{0}とする。このとき aa (mod m),bb (mod m) が成り立つならば、
  1. a±ba±b (mod m),
  2. abab (mod m)
が成り立つ。
 一般に、aa (mod m)bb (mod m)cc (mod m)で、またf(x,y,z,)x,y,z,に関する整数を係数とする多項式であれば、 f(a,b,c,)f(a,b,c,) (mod m) である。

定理1.の証明は【代数学の基礎シリーズ】初等整数論編 その10を御覧ください。

すなわち、mを法としてx0と同じ同値類(整数の合同は同値関係だから)に含まれる整数はすべて()の解なのです。

したがって、合同式を解くというのは、

合同式を満たす整数の類(同値類)を求めること。

ということになるわけです。

「類を求めること」なので、実は虱潰しに解を求めることができます。
なぜなら、mを法とすれば、Zはちょうどm個の類に分けられるからです。
つまり、Zmで割り切れるグループ、1余るグループ、2余るグループ、m1余るグループのm個の類に分けられます。
したがって、これらを1つずつ当てはめてみれば良いわけなのです。

要するに、手数さえ厭わなければ、合同式を解くことができるのです。

「連立合同式を解く」とは?

これも同じです。

連立合同式を解く

{xa1 (mod m1)xa2 (mod m2)xak (mod mk) を満たす未知の整数xを求めることを連立合同式を解くという。

先程述べたように、この「未知の整数xを求める」というのは「xが含まれる同値類を求める」という意味です。

例えば、どんなのが連立合同式か?(こういう問題を解きたい)

例えば、こんなのが連立合同式です。
{x3 (mod 4)x20 (mod 25)

また、こんなのも連立合同式です。
{x4 (mod 15)x10 (mod 21)

今回は、「これらの問題を解きたいけど、どういうときに解が存在するのか?」について解説します。

「解き方だけ知りたいんだ!」という方は実際に解いてみるまで飛んで下さい。

連立合同式の解の存在条件①(法がどの2つも互いに素である場合)

では、本題です。

解の存在条件とその証明

定理0.(連立合同式の解の存在条件、中国式剰余定理)

m1,m2,,mkZが2つずつ互いに素、すなわち、 (i,j{1,2,,k}:ij) gcd(mi,mj)=1 (どの2つのmimjも自身以外と互いに素)であり、a1,a2,,akZとする。このとき、 {xa1 (mod m1)xa2 (mod m2)xak (mod mk) を満たすxの類はM=kl=1ml=m1m2mkを法として、唯一存在する。

要するに、

法がどの2つも互いに素だったら、解の類は唯一つ存在しますよ。

ということです。
もっと平たく言えば、法がどの2つも互いに素の場合は解ける、ということです(実はこの限りではありません)。

定理0.の証明

まず、(1)の第一の合同式、すなわちxa1 (mod m1)を満たすようなxZ
(tZ) s.t. x=a1+m1t
を満たします。

このxが同時に第二の合同式、すなわちxa2 (mod m2)を満たしているため
a1+m1ta2 (mod m2)
です。

a1a1 (mod m2)だから(実際、a1(a1)=a1+a1=0=0×m2)、定理1.により
a1+m1ta2 (mod m2)a1+m1ta1a2a1 (mod m2)m1ta2a1 (mod m2)
となります。

もっと単純に、a1+m1ta2 (mod m2)であるので
(tZ) s.t. a1+m1ta2=m2t
であるから
m1t(a2a1)=m2t
となり、m1ta2a1 (mod m2)を得る、としてもOKです。

ここで、次の事実を使います。

定理2.

一次合同式 axb (mod m)gcd(a,m)=1なるときは、1つの解を持つ。gcd(a,m)=d>1であるときは、bdで割り切れるときに限って解を持つ。その解の数はdである。ただし、解の数はmを法としての類の関してである。

定理2.の証明は【代数学の基礎シリーズ】初等整数論編 その11を御覧ください。

さて、仮定からgcd(m1,m2)=1であるため、tを未知数と見たときの合同式(3)は、類の意味で唯一の解を持ちます。
そしてその解は
t=t0+m2s
という形をしていて、m2を法とする一つの剰余類(合同類)です。
これを(2)に代入すると、
x=a1+m1t=a1+m1(t0+m2s)=a1+m1t0+m1m2s
となります。
故に、x(a1+m1t0)=m1m2sだから、
x(a1+m1t0) (mod m1m2)
となります。

さて、今の今まで行っていたことは、
{xa1 (mod m1)xa2 (mod m2)
の解を求めることです。

そもそも連立方程式を解くことは

全ての式を同時に満たす未知数を求めること

です。
より論理的に書けば、今回の場合は

xa1 (mod m1)かつxa2 (mod m2)かつxa3 (mod m3)かつかつxak (mod mk)
を満たす未知数xを求めよ。

という問題です。
今まで行ってきたことは

xa1 (mod m1)かつxa2 (mod m2)
を満たす未知数xを求めること。

であったわけで、そしてその解はx(a1+m1t0) (mod m1m2)だとわかりました。

したがって、もともとの連立方程式(1)
{xa1 (mod m1)xa2 (mod m2)xak (mod mk)
を解くことは、
{x(a1+m1t0) (mod m1m2)xa3 (mod m3) xak (mod mk)
を解くことと同じ意味となるわけです。

故に、(1′)を新しい連立合同式と見て、
{x(a1+m1t0) (mod m1m2)xa3 (mod m3)
を、先程と同様に解くことができます。

この操作を繰り返していけば、(1)の解が
xx0 (mod m1m2mk)
すなわち、xx0 (mod M)として求まります。

定理0.の証明終わり

解の存在条件(別証明)

別証明もあります。

定理0.の別証明

M=kn=1mn=m1m2mk
とし、さらに
Mn=Mmn(n=1,2,,k)
で定めます。
つまり、Mnm1,,mkの中で、mn以外をかけ合わせた整数ということになります。

さて、このとき、
Mntn1 (mod mn)(n=1,2,,k)
を満たすtnを求めます。

このとき、連立合同式(1)の解は
xa1M1t1+a2M2t2++akMktk (mod M)
となります。

何故かということを説明します。
もしxが(6)を満たしているとします。
M1t11 (mod m1)によりa1M1t1a1 (mod m1)が成り立ちます。
実際、a1a1 (mod m1)であるため、再度定理1.からa1M1t1a1 (mod m1)が成り立ちます。
したがって、
(l1Z) s.t. a1M1t1=a1+m1l1
となります。
今、xは(6)を満たしているのですから、
(l2Z) s.t. x(a1M1t1+a2M2t2++akMktk)=m1mkl2
を満たします。
これを変形して
x(a1M1t1+a2M2t2++akMktk)=m1mkl2x{(a1+m1l1)+a2M2t2++akMktk}=m1mkl2xa1=m1{l1+a2M2m1t2++akMkm1tk+m2mkl2}
となります。
ここで、(4)から
M=m1M1==mkMk
ですのでm1|Mn (n=2,3,,k)です。
故にMnm1Z (n=2,3,,k)となります。
つまり、
l1+a2M2m1t2++akMkm1tk+m2mkl2Z
となります。
したがって、xa1m1の倍数、すなわち
xa1 (mod m1)
を満たします。

この議論はm1のみに対することではなく、全く同様にしてxan (mod mn) (n=2,3,,k)を得ることができます。
したがって、
(n{1,2,,k}) xan (mod mn)
を得るから、(6)を満たすxは連立方程式(1)の解であるというわけです。

また、(1)の解は (mod M)に関して唯一です。
実際、xおよびxを(1)の解とすれば、
(n{1,2,,k}) xai (mod mi)
であり、かつ
(n{1,2,,k}) xai (mod mi)
です。
整数の合同は同値関係だったということを思い出せば、反射律と推移律から
(n{1,2,,k}) xx (mod mi)
となります。
すなわち、xxm1,,mkの全てで割り切れます。
今、m1,,mkはどの2つも互いに素であるため、m1,,mkの最小公倍数はMです。
故に、xxMで割り切れます。
これはまさにxx (mod M)を表しています。

定理0.の証明終わり

解の存在条件②(法が互いに素でない場合)

例えば、次の連立合同式を①(法がどの2つも互いに素な場合)と同じように解いてみます。

{x4 (mod 7)x7 (mod 10)

第一式により、解xkZを用いてx=6k+4という形をしています。
故に、第二式により、kZを用いて
6k+47=10k6k3=10k
を満たします。
6k3=2(3k2)+1により6k3は奇数です。
しかしながら、10k=2×5kは偶数であり、偶奇性が一致しないため、この連立合同方程式は解が存在しません。

「じゃあ、この場合は解は存在しないの?」と思うかもしれませんが、そうではありません。
存在する場合もあります。

解の存在条件の明示と証明 (2つの合同式の場合)

定理3.

m,nの最大公約数をd、最小公倍数をlとすれば、連立合同式 {xa (mod m)xb (mod n) の解が存在するための必要十分条件はab (mod d)である。また、解が存在するならば、lを法として唯一である。

定理3.の証明

(①の証明

連立合同式
{xa (mod m)xb (mod n) 
が解xを持つとします。
このとき、ab (mod d)を証明します。

第一式から解xk1Zを用いて
x=a+mk1
という形をしています。
また、x=a+mk1が第二式も満たすので、k2Zを用いて
a+mk1b=nk2ab=nk2mk1
となります。

mnの最大公約数gcd(m,n)mの約数でもあり、同時にnの約数でもあります。
したがって、
(s,tZ) s.t. m=gcd(m,n)s,n=gcd(m,n)t
となります。
故に、
ab=nk2mk1=gcd(m,n)tk2gcd(m,n)sk1=gcd(m,n)(tk2sk1)
となるため、ab (mod d)です。

(②の証明

逆に、ab (mod d)だったとしましょう。
このとき、
(k3Z) s.t. a=b+dk3=b+gcd(m,n)k3
です。

次の定理を使います。

定理4.

一次の不定方程式 ax+by=k(a,b,kZ) が整数解を持つための必要十分条件は、kd=gcd(a,b)で割り切れることである(変数の数は任意)。

定理4.の証明は【代数学の基礎シリーズ】初等整数論編 その6を御覧ください。

定理4.から、mp+nq=dというp,qZが存在します。
今、ab=dk3であるから、
mp+nq=abk3
すなわち
k3mp+k3nq=ab
です。
ここで、
x=a+k3mp=bk3nq
とすれば、
xa=m×k3p,xb=n×(k3q)
となるので、
xa (mod m),xb (mod n)
となるから、このxは連立合同式の解となります。

③解が存在するならば、l=lcm(m,n)を法として唯一であることの証明

仮に、解がx1およびx2の2つ存在したとしましょう。
このとき、x1およびx2は連立合同式
{xa (mod m)xb (mod n)
の解ですので、
x1a (mod m),x2a (mod m)
を満たします。
故に
x1x2 (mod m)
だから、
(k1Z) s.t. x1x2=k1m
です。

一方で、
x1a (mod n),x2a (mod n)
も満たします。
故に先程と同様にして
(k2Z) s.t. x1x2=k2n
です。

以上のことから、x1x2mnの公倍数です。

ここで、次の事実を使います。

定理5.

2つ以上の整数の公倍数は最小公倍数の倍数である。

定理5.の証明は【代数学の基礎シリーズ】初等整数論編 その3を御覧ください。

定理5.から、x1x2l=lcm(m,n)の倍数です。
したがって、
(KZ) s.t. x1x2=Klcm(m,n)
です。
これはまさにx1x2 (mod lcm(m,n))を表しています。

定理3.の証明終わり

解の存在条件の明示と証明 (一般の場合) ※証明は抹茶様より提供

定理6.

m1,m2,,mnの最小公倍数をlとすれば、連立合同式 {xa1 (mod m1)xa2 (mod m2)xa2 (mod mn) の解が存在するための必要十分条件は1i,jnなる任意のi,jNに対してaiaj (mod gcd(mi,mj))である。また、解が存在するならば、lを法として唯一である。

定理6.の証明 ※抹茶様より提供頂いた証明に追記

の証明

仮に解xが存在したとすると、1inなる任意のiNに対して
xai (mod mi)
が成り立つため、
{xa1 (mod m1)(1)xa2 (mod m2)(2)
を満たしています。

このとき、(1)から、
(u1Z) s.t. xa1u1m1x=a1+u1m1
を満たします。

また、このxが同時に(2)も満たすので
(u2Z) s.t. xa2u2m2x=a2+u2m2
も満たします。

したがって、
x=a1+u1m1=a2+u2m2
を満たします。

そもそも、1inなる任意のiNに対して
xai (mod mi)
が成り立つため、今の操作を続けることで
x=a1+u1m1=a2+u2m2==an+unmn
を満たすu3,,unZが存在します。

故に、1i,jnなる任意のi,jNに対して
x=ai+uimi=aj+ujmj
です。
したがって、
aiaj=ujmjuimi
です。

ここで、gcd(mi,mj)miの約数でもあり、また同時にmjの約数でもあります。
故に、
(s,tZ) s.t. mi=gcd(mi,mj)s, mj=gcd(mi,mj)t
です。
したがって、
aiaj=ujmjuimi=ujgcd(mi,mj)tuigcd(mi,mj)s=gcd(mi,mj)(ujtuis)
となるから、aiaj (mod gcd(mi,mj))です。

の証明

逆に、aiaj (mod gcd(mi,mj))だったとしましょう。
すなわち、gcd(mi,mj)(aiaj)とします。

このとき、再度定理4.を使います。

定理4.

一次の不定方程式 ax+by=k(a,b,kZ) が整数解を持つための必要十分条件は、kd=gcd(a,b)で割り切れることである(変数の数は任意)。

定理4.の証明は【代数学の基礎シリーズ】初等整数論編 その6を御覧ください。

定理4.から
(v1,v2Z) s.t. mivi+mjvj=aiaj
です。
つまり、
aimivi=aj+mjvj
です。

このとき、x=aimivi=aj+mjvjとすれば、
xai=mi(vi),xaj=mjvj
です。

ここで、i,j1i,jnを満たす任意の自然数だったわけですので、(3)は1からnまでのすべてのペアに対して成り立っているということを指しています。

したがって、任意の1knを満たすkNに対してxak (mod mk)が成り立っているということになり、解の存在が証明完了です。

③解が存在するならば最小公倍数を法として唯一存在することの証明

仮に、解がx1およびx2の2つ存在したとしましょう。
このとき、x1およびx2は連立合同式

{xa1 (mod m1)xa2 (mod m2)xa2 (mod mn)
の解ですので、
x1a1 (mod m1),x2a1 (mod m1)
を満たします。
故に
x1x2 (mod m1)
だから、
(k1Z) s.t. x1x2=k1m1
です。

一方で、
x1a2 (mod m2),x2a2 (mod m2)
も満たします。
故に先程と同様にして
(k2Z) s.t. x1x2=k2m2
です。

以上のことから、x1x2m1m2の公倍数です。

この操作を続けることによって
x1x2=k1m1=k2m2==knmn
なるk1,,knZが存在します。

ここで、再度定理5.を使います。

定理5.

2つ以上の整数の公倍数は最小公倍数の倍数である。

定理5.の証明は【代数学の基礎シリーズ】初等整数論編 その3を御覧ください。

定理5.から、x1x2l=lcm(m1,m2,,mn)の倍数です。
したがって、
(KZ) s.t. x1x2=Klcm(m1,m2,,mn)
です。
これはまさにx1x2 (mod lcm(m1,m2,,mn))を表しています。

定理6.の証明終わり

実際に解いてみる

例1

{x3 (mod 4)x20 (mod 25)
を解きます。

gcd(4,25)=1ですので、解は存在し、その解xはある整数p,qを用いて
x=25p+4q
を満たします。

このとき、第一式より
325p+4q (mod 4)
となり、25=4×6+1から
3p+0 (mod 4)
だから、a3 (mod 4)です。

一方で、同様にして
2025p+4q (mod 25)
であり、
2025p+4q (mod 25)50+4q (mod 25)4q5 (mod 25)24q30 (mod 25)q5 (mod 25)q5 (mod 25)

求めたいのはx=25p+4qだから、p=3,q=5とするとx=25×3+4×5=95
すなわち、x95 (mod 100)です。

例2

{x4 (mod 15)x10 (mod 21)

これはサラッと解きます。

x=4+15t10 (mod 21)により、15t6 (mod 21)です。
そして、5t2 (mod 7)よりt6 (mod 7)です。
したがって、x4+15×6=94 (mod 105)です。

皆様のコメントを下さい!

大学に入学して驚いたこと、そして結局慣れたことはありますか?
筆者は「え…数学の本ってこんなに高いの…?」と思いましたが、結局「専門書だしな。この本でマスターできると思えば高えよな。」と慣れてしまいました。

皆様はどうですか?
是非コメントで教えて下さい!

今回は、連立合同式の解の存在条件について解説しました。
条件は2つに分かれていて、

  • 法が互いに素である場合(中国式剰余定理)
  • 法が互いに素でない場合

です。

互いに素である場合は有名だと思いますが、素でない場合にも解が存在する場合があります。

次回は整数係数多項式の合同式について解説します。

乞うご期待!
質問、コメントなどお待ちしております!
どんな些細なことでも構いませんし、「定理〇〇の△△が分からない!」などいただければお答えします!
お問い合わせの内容にもよりますが、ご質問はおおよそ1週間以内にお答えします。
(難しかったらもう少しかかるかもしれませんが…)

初等整数論について、以下の書籍をオススメします!

コメントをする

  1. 初めまして。
    互いに素では無い場合の定理3、2つの時に限定されていますがもっと一般にn本の連立合同式で成り立つように思います。定理0は一般のnだったので少し気になってしまいました。
    写真やPDFが送れないので私がやってみた証明の概略を載せときます。(n=2と本質的には同じです。)

    定理
    x≡a_i (mod m_i), 1≦i≦nを同時に満たす解がある⇔a_i≡a_j (mod (m_i,m_j)) , 1≦i,j≦n

    解がある⇒m_1,…,m_nの最小公倍数lを法としてただ1つ

    略証
    x≡a_1 (mod m_1)のある解x=a_1+m_1u_1 (u_1∈Z)が同時にx≡a_2(mod m_2)の解とすればあるu_2∈Zを用いてx=a_1+m_1u_1=a_2+m_2u_2とできる。以下同様にこのxがx≡a_3(mod m_3)からx≡a_n(mod m_n)までの解でもあるならa_1+m_1u_1=…=a_n+m_nu_nが成り立つ。ここから任意に2本ずつ取ってきてa_i+m_iu_i=a_j+m_ju_jを考えれば定理3と同様の流れで終わり。
    逆に((m_i,m_j))|(a_i-a_j)ならある整数v_i,v_jがあってm_iv_i+m_jv_j=a_i-a_jとできる。この時x=a_i-m_iv_i=a_j+m_jv_jは同時にx≡a_i,x≡a_jを満たす。よって同値。

    解がある時、その任意の2解をx_1,x_2としておけば
    x_1≡a_i(mod m_i),x_2≡a_i (mod m_i)となりx_1≡x_2(mod m_i)
    従ってx_1-x_2はm_1,m_2…m_nの公倍数。任意の公倍数は最小公倍数の倍数よりl|(x_1-x_2)すなわちx_1≡x_2(mod l)

    見間違えじゃなければ定理3は最小公倍数を法として…の証明をやっていないように見えたので少し細かく書きました。

    私もまだ学んでいる最中の身ですから証明に不備があったら指摘いただけますと幸いです。

    もし証明を追加される場合はこの証明を使ってもらっても大丈夫です。

    • 抹茶様

      コメントありがとうございます。
      >互いに素では無い場合の定理3、2つの時に限定されていますがもっと一般にn本の連立合同式で成り立つように思います。(以下略)
      とのお問い合わせでしたが、おっしゃるとおり一般にn本でも成り立ちます。
      証明も載せていただき、ありがとうございました。
      お名前をとともに本記事に掲載致しました。
      (※抹茶様の証明でも十分分かりやすいのですが、「こうするともっと丁寧かな?」ということで多少追記致しました)

      >見間違えじゃなければ定理3は最小公倍数を法として…の証明をやっていないように見えたので少し細かく書きました。
      ご指摘ありがとうございます。これもまた抹茶様の証明に追記する形で掲載致しました。

タイトルとURLをコピーしました