§A4.6中国剰余定理

最終更新

3で割ると2余り、5で割ると3余り、7で割ると2余る数は何か、という問題があります。この問題は『孫子算経』(4–5世紀の中国の算術書)に載っている、複数の余りからもとの数を復元する問題の最初期の例です。本記事では、この問題の答えを求める計算をもとに、中国剰余定理を述べて証明します。

1 連立合同式の例

例 1.1.x≡2(mod3)x \equiv 2 \pmod 3とx≡3(mod5)x \equiv 3 \pmod 5をともに満たす整数xxを求める。33と55は互いに素なので、§A4.3 補題 1.1により3u+5v=13u+5v=1を満たす整数u,vu,vが存在する。u=2,v=−1u=2,v=-1と取ると、3×2+5×(−1)=13\times2+5\times(-1)=1である。

x=2×5×(−1)+3×3×2=−10+18=8x = 2 \times 5 \times (-1) + 3 \times 3 \times 2 = -10 + 18 = 8

とおくと、5v=1−3u≡1(mod3)5v=1-3u\equiv1\pmod3よりx≡2(mod3)x\equiv2\pmod3であり、3u=1−5v≡1(mod5)3u=1-5v\equiv1\pmod5よりx≡3(mod5)x\equiv3\pmod5である。したがって88は二つの条件を満たす。

2 中国剰余定理

補題 2.1.m,nm,nを互いに素な正の整数、a,ba,bを整数とする。mu+nv=1mu+nv=1を満たす整数u,vu,vを取り、x0=anv+bmux_0=anv+bmuとおく。整数xxが

x≡a(modm),x≡b(modn)x\equiv a\pmod m,\qquad x\equiv b\pmod n

をともに満たすための必要十分条件は、x≡x0(modmn)x\equiv x_0\pmod{mn}である。

証明.§A4.3 補題 1.1により、mu+nv=1mu+nv=1を満たす整数u,vu,vが存在する。nv≡1(modm)nv\equiv1\pmod m、mu≡1(modn)mu\equiv1\pmod nであるから、x0=anv+bmux_0=anv+bmuは二つの合同式を満たす。

整数xxも二つの合同式を満たすなら、ある整数s,ts,tによってx−x0=ms=ntx-x_0=ms=ntと書くことができる。したがって、

x−x0=(mu+nv)(x−x0)=mn(ut+vs)x-x_0=(mu+nv)(x-x_0)=mn(ut+vs)

であり、x≡x0(modmn)x\equiv x_0\pmod{mn}が成り立つ。逆に、x≡x0(modmn)x\equiv x_0\pmod{mn}なら、mmとnnはともにx−x0x-x_0を割り切るので、xxは二つの合同式を満たす。▨

定理 2.2.r≥2r\ge2を整数とし、m1,…,mrm_1,\ldots,m_rをどの二つも互いに素な正の整数、a1,…,ara_1,\ldots,a_rを整数とする。M=m1⋯mrM=m_1\cdots m_rとおく。ある整数x0x_0が存在して、整数xxがすべてのi=1,…,ri=1,\ldots,rについてx≡ai(modmi)x\equiv a_i\pmod{m_i}を満たすための必要十分条件は、x≡x0(modM)x\equiv x_0\pmod Mである。

証明.r=2r=2の場合は補題 2.1による。k≥2k\ge2とし、r=kr=kの場合に主張が成り立つと仮定する。帰納法の仮定により、最初のkk個の合同式は、ある整数ccとP=m1⋯mkP=m_1\cdots m_kを用いてx≡c(modP)x\equiv c\pmod Pとまとめることができる。

PPとmk+1m_{k+1}に11より大きい公約数があれば、§A4.2 定理 2.2により、その公約数に素因子ppが存在する。ppはPPとmk+1m_{k+1}をともに割り切り、§A4.2 補題 2.1を繰り返し用いると、ppはm1,…,mkm_1,\ldots,m_kのいずれかも割り切る。これは法がどの二つも互いに素であることに反するので、PPとmk+1m_{k+1}は互いに素である。補題 2.1により、x≡c(modP)x\equiv c\pmod Pとx≡ak+1(modmk+1)x\equiv a_{k+1}\pmod{m_{k+1}}は、法Pmk+1Pm_{k+1}の一つの合同式にまとめることができる。数学的帰納法により、すべての整数r≥2r\ge2について主張が成り立つ。▨

3 3条件への拡張

例 3.1.x≡2(mod3)x\equiv2\pmod3、x≡3(mod5)x\equiv3\pmod5、x≡2(mod7)x\equiv2\pmod7をともに満たす整数xxを求める。例 1.1の構成と補題 2.1により、最初の二つの合同式はx≡8(mod15)x\equiv8\pmod{15}と同値である。1515と77は互いに素であり、15×1+7×(−2)=115\times1+7\times(-2)=1なので、補題 2.1の構成でu=1,v=−2u=1,v=-2と取ると

x=8×7×(−2)+2×15×1=−112+30=−82≡23(mod105)x = 8 \times 7 \times (-2) + 2 \times 15 \times 1 = -112 + 30 = -82 \equiv 23 \pmod{105}

となる。したがって、解の全体はx≡23(mod105)x\equiv23\pmod{105}で表される。実際、23=3×7+2=5×4+3=7×3+223=3\times7+2=5\times4+3=7\times3+2であり、三つの条件をすべて満たす。

問題 3.2.0≤x<300\le x<30を満たす整数xxのうち、x2≡x(mod30)x^2\equiv x\pmod{30}を満たすものをすべて求めよ。

解答.

x2≡x(mod30)x^2\equiv x\pmod{30}は30∣x(x−1)30\mid x(x-1)と同値である。§A4.2 定理 2.2により、この条件は2,3,52,3,5がそれぞれx(x−1)x(x-1)を割り切ることと同値である。§A4.2 補題 2.1により、各素数p=2,3,5p=2,3,5について、p∣x(x−1)p\mid x(x-1)ならばp∣xp\mid xまたはp∣x−1p\mid x-1である。逆に、どちらかの因子をppが割り切るならば、積もppで割り切れる。したがって、各法ではx≡0(modp)x\equiv0\pmod pまたはx≡1(modp)x\equiv1\pmod pとなる。

a,b,ca,b,cをそれぞれ0,10,1から選び、

x≡a(mod2),x≡b(mod3),x≡c(mod5)x\equiv a\pmod2,\qquad x\equiv b\pmod3,\qquad x\equiv c\pmod5

とする。定理 2.2により、各組(a,b,c)(a,b,c)に対応する解は法3030でただ一つ存在する。1515は法22で11、法3,53,5で00である。1010は法33で11、法2,52,5で00であり、66は法55で11、法2,32,3で00である。したがって、対応する解は

x≡15a+10b+6c(mod30)x\equiv15a+10b+6c\pmod{30}

である。八つの組を代入し、00以上3030未満の余りに直すと、

x=0,1,6,10,15,16,21,25x=0,1,6,10,15,16,21,25

を得る。どの解からも三つの余りの組が定まり、異なる組は同じ解に対応しないため、これらが解のすべてである。▨

4 法が互いに素でないとき

法が互いに素でない場合、中国剰余定理はそのままでは用いることができません。x≡a(modm)x \equiv a \pmod mとx≡b(modn)x \equiv b \pmod nが両立するのはa≡b(modgcd⁡(m,n))a \equiv b \pmod{\gcd(m,n)}のときに限られます。両立するとき、解は法lcm(m,n)\mathrm{lcm}(m,n)のもとで一意に定まります。m,nm,nが互いに素な場合には、この条件は自動的に満たされます。さらに、lcm(m,n)=mn\mathrm{lcm}(m,n)=mnであるので、この節で述べた解の存在と一意性は、中国剰余定理の主張と一致します。

5 小さな法への分解による計算

中国剰余定理は、現代の計算機での整数の計算にも用いられています。巨大な整数の演算を1つの大きな法で行う代わりに、いくつかの小さい互いに素な法で並列に計算し、最後に中国剰余定理を用いて1つの答えを復元する技法があります。多倍長演算のライブラリや、 RSA 暗号の復号(法n=pqn=pqでの計算を、法pp・法qqそれぞれで行ってから CRT で合成する)では、この技法によって計算量が大きく減ることが知られています。この技法は、大きな法での計算を小さな法での計算の組合せに分解するという考え方を、計算機での実装に用いた例です。

6 例題

レベル2 — 中国剰余定理

次の連立合同式を満たす x を、法の積を法として求めよ。

解法の型一方の式をx=a+mkx = a + mkとおき、もう一方の式へ代入する

例 6.1.

{x≡1(mod4)x≡4(mod7)\begin{cases} x \equiv 1 \pmod{4} \\ x \equiv 4 \pmod{7} \end{cases}

答x≡25(mod28)x \equiv 25 \pmod{28}

例 6.2.

{x≡1(mod3)x≡5(mod7)\begin{cases} x \equiv 1 \pmod{3} \\ x \equiv 5 \pmod{7} \end{cases}

答x≡19(mod21)x \equiv 19 \pmod{21}

例 6.3.

{x≡1(mod7)x≡3(mod9)\begin{cases} x \equiv 1 \pmod{7} \\ x \equiv 3 \pmod{9} \end{cases}

答x≡57(mod63)x \equiv 57 \pmod{63}

例 6.4.

{x≡2(mod4)x≡6(mod7)\begin{cases} x \equiv 2 \pmod{4} \\ x \equiv 6 \pmod{7} \end{cases}

答x≡6(mod28)x \equiv 6 \pmod{28}

例 6.5.

{x≡1(mod5)x≡3(mod7)\begin{cases} x \equiv 1 \pmod{5} \\ x \equiv 3 \pmod{7} \end{cases}

答x≡31(mod35)x \equiv 31 \pmod{35}

例 6.6.

{x≡0(mod4)x≡2(mod7)\begin{cases} x \equiv 0 \pmod{4} \\ x \equiv 2 \pmod{7} \end{cases}

答x≡16(mod28)x \equiv 16 \pmod{28}

例 6.7.

{x≡3(mod5)x≡4(mod7)\begin{cases} x \equiv 3 \pmod{5} \\ x \equiv 4 \pmod{7} \end{cases}

答x≡18(mod35)x \equiv 18 \pmod{35}

例 6.8.

{x≡3(mod7)x≡7(mod9)\begin{cases} x \equiv 3 \pmod{7} \\ x \equiv 7 \pmod{9} \end{cases}

答x≡52(mod63)x \equiv 52 \pmod{63}

例 6.9.

{x≡0(mod4)x≡3(mod7)\begin{cases} x \equiv 0 \pmod{4} \\ x \equiv 3 \pmod{7} \end{cases}

答x≡24(mod28)x \equiv 24 \pmod{28}

例 6.10.

{x≡4(mod5)x≡5(mod7)\begin{cases} x \equiv 4 \pmod{5} \\ x \equiv 5 \pmod{7} \end{cases}

答x≡19(mod35)x \equiv 19 \pmod{35}

7 演習

レベル2 — 中国剰余定理

次の連立合同式を満たす x を、法の積を法として求めよ。

解法の型一方の式をx=a+mkx = a + mkとおき、もう一方の式へ代入する

問題 7.1.

{x≡1(mod5)x≡4(mod7)\begin{cases} x \equiv 1 \pmod{5} \\ x \equiv 4 \pmod{7} \end{cases}
解答.

答x≡11(mod35)x \equiv 11 \pmod{35}▨

問題 7.2.

{x≡4(mod7)x≡3(mod9)\begin{cases} x \equiv 4 \pmod{7} \\ x \equiv 3 \pmod{9} \end{cases}
解答.

答x≡39(mod63)x \equiv 39 \pmod{63}▨

問題 7.3.

{x≡0(mod5)x≡7(mod8)\begin{cases} x \equiv 0 \pmod{5} \\ x \equiv 7 \pmod{8} \end{cases}
解答.

答x≡15(mod40)x \equiv 15 \pmod{40}▨

問題 7.4.

{x≡4(mod5)x≡2(mod8)\begin{cases} x \equiv 4 \pmod{5} \\ x \equiv 2 \pmod{8} \end{cases}
解答.

答x≡34(mod40)x \equiv 34 \pmod{40}▨

問題 7.5.

{x≡1(mod4)x≡0(mod7)\begin{cases} x \equiv 1 \pmod{4} \\ x \equiv 0 \pmod{7} \end{cases}
解答.

答x≡21(mod28)x \equiv 21 \pmod{28}▨

問題 7.6.

{x≡6(mod7)x≡2(mod9)\begin{cases} x \equiv 6 \pmod{7} \\ x \equiv 2 \pmod{9} \end{cases}
解答.

答x≡20(mod63)x \equiv 20 \pmod{63}▨

問題 7.7.

{x≡1(mod3)x≡3(mod7)\begin{cases} x \equiv 1 \pmod{3} \\ x \equiv 3 \pmod{7} \end{cases}
解答.

答x≡10(mod21)x \equiv 10 \pmod{21}▨

問題 7.8.

{x≡3(mod5)x≡5(mod8)\begin{cases} x \equiv 3 \pmod{5} \\ x \equiv 5 \pmod{8} \end{cases}
解答.

答x≡13(mod40)x \equiv 13 \pmod{40}▨

問題 7.9.

{x≡1(mod3)x≡4(mod5)\begin{cases} x \equiv 1 \pmod{3} \\ x \equiv 4 \pmod{5} \end{cases}
解答.

答x≡4(mod15)x \equiv 4 \pmod{15}▨

問題 7.10.

{x≡4(mod5)x≡4(mod8)\begin{cases} x \equiv 4 \pmod{5} \\ x \equiv 4 \pmod{8} \end{cases}
解答.

答x≡4(mod40)x \equiv 4 \pmod{40}▨

問題 7.11.

{x≡0(mod3)x≡3(mod7)\begin{cases} x \equiv 0 \pmod{3} \\ x \equiv 3 \pmod{7} \end{cases}
解答.

答x≡3(mod21)x \equiv 3 \pmod{21}▨

問題 7.12.

{x≡0(mod4)x≡1(mod7)\begin{cases} x \equiv 0 \pmod{4} \\ x \equiv 1 \pmod{7} \end{cases}
解答.

答x≡8(mod28)x \equiv 8 \pmod{28}▨

問題 7.13.

{x≡3(mod5)x≡7(mod8)\begin{cases} x \equiv 3 \pmod{5} \\ x \equiv 7 \pmod{8} \end{cases}
解答.

答x≡23(mod40)x \equiv 23 \pmod{40}▨

問題 7.14.

{x≡1(mod3)x≡6(mod7)\begin{cases} x \equiv 1 \pmod{3} \\ x \equiv 6 \pmod{7} \end{cases}
解答.

答x≡13(mod21)x \equiv 13 \pmod{21}▨

問題 7.15.

{x≡2(mod5)x≡2(mod8)\begin{cases} x \equiv 2 \pmod{5} \\ x \equiv 2 \pmod{8} \end{cases}
解答.

答x≡2(mod40)x \equiv 2 \pmod{40}▨

前提記事