§A4.6中国剰余定理

最終更新

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

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

1 2つの条件をまとめる

まずx≡2(mod3)x \equiv 2 \pmod 3とx≡3(mod5)x \equiv 3 \pmod 5の2条件を1つにまとめます。33と55は互いに素なので、ベズーの等式3u+5v=13u + 5v = 1を満たす整数u,vu, vが存在します。u=2,v=−1u = 2, v = -1(3×2+5×(−1)=13\times 2 + 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 \equiv 1 \pmod 3なのでx≡2×1=2(mod3)x \equiv 2 \times 1 = 2 \pmod 3、同様に3u≡1(mod5)3u \equiv 1 \pmod 5なのでx≡3×1=3(mod5)x \equiv 3 \times 1 = 3 \pmod 5——両方の条件を同時に満たします。x≡8(mod15)x \equiv 8 \pmod{15}が2条件の答えです。

2 中国剰余定理

いま行った操作を一般化したのが中国剰余定理です。

m,nm, nが互いに素なとき、x≡a(modm)x \equiv a \pmod mかつx≡b(modn)x \equiv b \pmod nを満たすxxが、法mnmnのもとでちょうど1つ存在する。

存在は先ほどと同じ構成です。mu+nv=1mu + nv = 1となるu,vu, vを(互いに素だから)ベズーの等式で取り、x=anv+bmux = anv + bmuとおけば、nv≡1(modm)nv \equiv 1 \pmod mよりx≡a(modm)x \equiv a \pmod m、mu≡1(modn)mu \equiv 1 \pmod nよりx≡b(modn)x \equiv b \pmod nが同時に成り立ちます。一意性は、x,x′x, x'がともに条件を満たすならx−x′x - x'はmmでもnnでも割り切れ、m,nm, nが互いに素だから積mnmnでも割り切れる(互いに素な数の倍数を両方満たすなら積の倍数、という事実による)ことから、x≡x′(modmn)x \equiv x' \pmod{mn}が出ます。

3 3条件への拡張

最初の問題に戻ります。x≡8(mod15)x \equiv 8 \pmod{15}と、残りの条件x≡2(mod7)x \equiv 2 \pmod 7を、同じ手順でもう一段まとめます。1515と77は互いに素で、15×1+7×(−2)=115 \times 1 + 7 \times(-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}

——答えは2323(法105=3×5×7105 = 3\times5\times7のもとで一意)です。実際23=3×7+2=5×4+3=7×3+223 = 3\times7+2 = 5\times4+3 = 7\times3+2と、3条件すべてを満たしています。

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 を、法の積を法として求めよ。

演習を読み込み中…

前提記事