1 2つの条件をまとめる
例 1.1.x≡2(mod3)とx≡3(mod5)をともに満たす整数xを求める。3と5は互いに素なので、§A4.3 補題 1.1により3u+5v=1を満たす整数u,vが存在する。u=2,v=−1と取ると、3×2+5×(−1)=1である。
x=2×5×(−1)+3×3×2=−10+18=8とおくと、5v=1−3u≡1(mod3)よりx≡2(mod3)であり、3u=1−5v≡1(mod5)よりx≡3(mod5)である。したがって8は二つの条件を満たす。
2 中国剰余定理
補題 2.1.m,nを互いに素な正の整数、a,bを整数とする。mu+nv=1を満たす整数u,vを取り、x0=anv+bmuとおく。整数xが
x≡a(modm),x≡b(modn)をともに満たすための必要十分条件は、x≡x0(modmn)である。
証明.§A4.3 補題 1.1により、mu+nv=1を満たす整数u,vが存在する。nv≡1(modm)、mu≡1(modn)であるから、x0=anv+bmuは二つの合同式を満たす。
整数xも二つの合同式を満たすなら、ある整数s,tによってx−x0=ms=ntと書くことができる。したがって、
x−x0=(mu+nv)(x−x0)=mn(ut+vs)であり、x≡x0(modmn)が成り立つ。逆に、x≡x0(modmn)なら、mとnはともにx−x0を割り切るので、xは二つの合同式を満たす。▨
定理 2.2.r≥2を整数とし、m1,…,mrをどの二つも互いに素な正の整数、a1,…,arを整数とする。M=m1⋯mrとおく。ある整数x0が存在して、整数xがすべてのi=1,…,rについてx≡ai(modmi)を満たすための必要十分条件は、x≡x0(modM)である。
証明.r=2の場合は補題 2.1による。k≥2とし、r=kの場合に主張が成り立つと仮定する。帰納法の仮定により、最初のk個の合同式は、ある整数cとP=m1⋯mkを用いてx≡c(modP)とまとめることができる。
Pとmk+1に1より大きい公約数があれば、§A4.2 定理 2.2により、その公約数に素因子pが存在する。pはPとmk+1をともに割り切り、§A4.2 補題 2.1を繰り返し用いると、pはm1,…,mkのいずれかも割り切る。これは法がどの二つも互いに素であることに反するので、Pとmk+1は互いに素である。補題 2.1により、x≡c(modP)とx≡ak+1(modmk+1)は、法Pmk+1の一つの合同式にまとめることができる。数学的帰納法により、すべての整数r≥2について主張が成り立つ。▨
3 3条件への拡張
例 3.1.x≡2(mod3)、x≡3(mod5)、x≡2(mod7)をともに満たす整数xを求める。例 1.1の構成と補題 2.1により、最初の二つの合同式はx≡8(mod15)と同値である。15と7は互いに素であり、15×1+7×(−2)=1なので、補題 2.1の構成でu=1,v=−2と取ると
x=8×7×(−2)+2×15×1=−112+30=−82≡23(mod105)となる。したがって、解の全体はx≡23(mod105)で表される。実際、23=3×7+2=5×4+3=7×3+2であり、三つの条件をすべて満たす。
問題 3.2.0≤x<30を満たす整数xのうち、x2≡x(mod30)を満たすものをすべて求めよ。
解答.
x2≡x(mod30)は30∣x(x−1)と同値である。§A4.2 定理 2.2により、この条件は2,3,5がそれぞれx(x−1)を割り切ることと同値である。§A4.2 補題 2.1により、各素数p=2,3,5について、p∣x(x−1)ならばp∣xまたはp∣x−1である。逆に、どちらかの因子をpが割り切るならば、積もpで割り切れる。したがって、各法ではx≡0(modp)またはx≡1(modp)となる。
a,b,cをそれぞれ0,1から選び、
x≡a(mod2),x≡b(mod3),x≡c(mod5)とする。定理 2.2により、各組(a,b,c)に対応する解は法30でただ一つ存在する。15は法2で1、法3,5で0である。10は法3で1、法2,5で0であり、6は法5で1、法2,3で0である。したがって、対応する解は
x≡15a+10b+6c(mod30)である。八つの組を代入し、0以上30未満の余りに直すと、
x=0,1,6,10,15,16,21,25を得る。どの解からも三つの余りの組が定まり、異なる組は同じ解に対応しないため、これらが解のすべてである。▨
4 法が互いに素でないとき
法が互いに素でない場合、中国剰余定理はそのままでは使えません。x≡a(modm)とx≡b(modn)が両立するのはa≡b(modgcd(m,n))のときに限られ、両立すれば解は法lcm(m,n)のもとで一意に定まります(互いに素な場合はこの条件が自動的に満たされ、lcm(m,n)=mnに戻ります)。
5 応用:大きな数を「小分けにして」計算する
中国剰余定理は現代の計算機にも直結しています。巨大な整数の演算を1つの大きな法で行う代わりに、いくつかの小さい互いに素な法で並列に計算し、最後に中国剰余定理で1つの答えに復元する、という技法です。多倍長演算のライブラリや、
RSA 暗号の復号(法n=pqでの計算を、法p・法qそれぞれで行ってから
CRT で合成する)では、この方法で計算量が大きく減ることが知られています。「大きな世界の計算」を「小さな世界の計算の組み合わせ」に分解する、という発想そのものが実装レベルで生きている例です。