基本的な合同式が使えたら十分である.より具体的には, この記事 の問題1,2がある程度解ければ十分である.
簡単な問題から始めよう.
$7$で割ると$3$余り,$5$で割ると$2$余る,$35$以下の正整数を答えよ.
この程度の問題であれば,小学$3$年生のレベルかもしれない.$7$で割ると$3$余る数を書きだしていけば$3,10,17,24,31$であり,このうち$5$で割ると$2$余る数は$17$のみである.よって答えは$17$だ.
しかし,これが解けたからといって,次の問題が解けるとは限らない.
$73$で割ると$3$余り,$53$で割ると$2$余る,$73×53$以下の正整数を答えよ.
このように,数値がある程度大きくなっても解けるだろうか.当然だが,問題1のように$73$で割って$3$余る数を$3,76,149,\cdots$と書きだすような方法は論外である.
この問題を解く方法はいくつかある.例えばEuclidの互除法を用いる方法や,百五減算のような方法がよく知られているが,ここでは合同式を使う方法を紹介したい.少しコツはいるが,慣れてしまえば一番早い方法だろう.
$N=73x+3=53y+2$とおける.ここで$53$を法とする合同式を考えよう.
まず与式は次のように書かれる.
$73x+3 \equiv 53y+2 \mod 53$
この式は$20x \equiv -1$と変形される.
ここから最終的には$x \equiv * \mod 53$という式を得たい.そこで,左辺の$20x$の係数を割れるように,右辺に$53$の倍数を足したり引いたりする.
ここからの途中計算は人によって変わるだろう.単純な例として$20x \equiv -1+53$とすれば両辺を$4$で割ることができて,$5x \equiv 13 $という式を得る.あるいは$20x \equiv -1-159$だと気づけば,一気に$20$で割ることもできる.
いきなり答えが出ては解説としてはつまらないので$5x \equiv 13$から続けよう.次は右辺を$5$で割り切れる数にしたいので$5x \equiv 13-53$とするのがよいだろう.こうすれば$x \equiv -8 \equiv 45$を得るので,$N=73×45+3=3288$だとわかる.
(確認問題)最初に$\mathrm{mod}\ 73$を取った場合,同じ結論になることを確かめよ.
次の条件を満たす最小の正整数を答えよ.
(1) $29$で割ると$4$余り,$41$で割ると$11$余る
(2) $47$で割ると$22$余り,$73$で割ると$40$余る
(3) $30$で割ると$1$余り,$37$で割ると$7$余る
(4) $60$で割ると$12$余り,$63$で割ると$36$余る
次は,もう少し難しい(というか面倒な)連立合同式である.
次の条件を満たす最小の正整数を答えよ.
(1) $10$で割ると$3$余り,$11$で割ると$5$余り,$12$で割ると$9$余る
(2) $5$で割ると$3$余り,$7$で割ると$5$余り,$11$で割ると$7$余り,$13$で割ると$11$余る.
(2)は工夫するとそこまで面倒ではないので,考えてみてほしい.
$k$個の整数$m_1, \cdots, m_k$が,どの$2$つも互いに素であるとき,連立合同式
$\begin{cases}
x &\equiv a_1 \mod m_1 \\
x &\equiv a_2 \mod m_2 \\
&\vdots \\
x &\equiv a_k \mod m_k
\end{cases}$
を満たす整数$x$が,$m_1m_2\cdots m_k$を法として一意に存在する.
証明は省略する.
この定理は,要するに$2$つのことを言っている.第一に$\mathrm{mod}\ m_i$の部分が全て互いに素なら必ず解を持つこと.第二に,そのような解は$\mathrm{mod}\ \prod m_i$を法として唯一であること(もう少しわかりやすい表現にすれば,$\prod m_i$ 以下の正整数の中でただ一つである).
$\mathrm{mod}\ m_i$の部分が全て互いに素でない場合はどうなるのか?を疑問に持った方は,
高校数学の美しい物語
を参照してほしい.
次に,この定理に関する注意点を書いておく.
中国剰余定理は,解の「存在」を保証してくれるものである.その値を「求める」ことについては,何も言及していない.連立合同式を解いて「中国剰余定理より$x \equiv *$が解である」などと書いている答案などをたまに見るが,これは正確ではない.
また,面倒なことを書くが,インターネット上のいくつかのホームページを見ても,あるいは数学の参考書等を見ても,中国剰余定理の練習問題として連立合同式を挙げていることがあるが,これも(厳密には)正確ではない.もちろんそれらの筆者が混同しているわけではなく,中国剰余定理の具体例を練習問題という名称で出題しているに過ぎないのだろう.しかしそれらの読者の中には,それが中国剰余定理を「用いた」例題であると誤解して,先に挙げたような答案を書くのだと思われる.
さらに混乱させかねないことを書くが,「中国剰余定理より$x \equiv *$が解である」という表現は必ず誤りかと言うと,そういうわけでもない.例えば次の答案を見よ.
問:$2$で割ると$1$余り,$3$で割ると$1$余り,$5$で割ると$1$余り,$7$で割ると$1$余る,$500$以下の正整数を全て答えよ.
答:$1$は明らかに条件を満たす.中国剰余定理より$x \equiv 1 \mod 210$のみが解である.すなわち,条件を満たす数は$210n+1$の形で表され,答えは$1,211,421$.
この例のように,解の唯一性を保証する意味で「中国剰余定理」を使うのは正しい表記である.なお,この例で「のみ」の部分を省略しても解答として悪くはない.つまり,「中国剰余定理より$x \equiv *$が解である」という表現が直ちに誤りであるというわけでもない.
以上,面倒な注であるとは思うが,中国剰余定理の意味を正確に覚えておいてほしいと思う.
もう一つ,この定理に関する注意点である.中国剰余定理は,英語で Chinese remainder theorem と書かれるため,CRT と省略されることがしばしばある(日本語の文献でもしばしばこのように省略される).この表記を自分で使える必要はないが,整数論の分野でCRTと見かけたら Chinese ナントカ theorem だったな→中国剰余定理だな,と思い出せるようにしておこう.
最後に,中国剰余定理を用いる例題である.
整数$n$を正整数$k$で割った余りを$n\%k$で表す.例えば$10\%3=1, 35\%5=0$である.このとき,次の値を求めよ.
$\sum\limits_{n=1}^{1000} (n\%7)×(n\%11)×(n\%13)$
(やや難)
$n$以下で$n$と互いに素な正整数の個数を$\phi(n)$で表す(これは一般的な記法である).
$n$を素因数分解すると$n=p_1^{e_1} \cdots p_k^{e_k}$と表されるとき(ただし$e_k \neq 0$),
$\phi(n)=n\left( 1-\dfrac{1}{p_1} \right)\cdots \left( 1-\dfrac{1}{p_k} \right)$