§A4.6中国剰余定理

最終更新

問題:3で割ると2余り、5で割ると3余り、7で割ると2余る数は何でしょうか。

これは『孫子算経』(4–5世紀の中国の算術書)に載っている、複数の余りからもとの数を復元する問題の元祖です。答えを探しながら、背後にある定理を取り出してみます。

1 2つの条件をまとめる

例 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)のもとで一意に定まります(互いに素な場合はこの条件が自動的に満たされ、lcm(m,n)=mn\mathrm{lcm}(m,n)=mnに戻ります)。

5 応用:大きな数を「小分けにして」計算する

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

例題

条件と何を求めるかを確認してから、式と答えの対応を見比べてください。

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

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

  1. 例題 1

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

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

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

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

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

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

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

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

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

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

演習

問題を解いてから「解答・解説」を開けます。

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

演習を読み込み中…

前提記事