0

OMC対策(N分野:連立合同式・中国剰余定理)

21
0

本記事の前提知識

 基本的な合同式が使えたら十分である.より具体的には, この記事 の問題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,と書きだすような方法は論外である.
 この問題を解く方法はいくつかある.例えばEuclidの互除法を用いる方法や,百五減算のような方法がよく知られているが,ここでは合同式を使う方法を紹介したい.少しコツはいるが,慣れてしまえば一番早い方法だろう.

問題2の解説

 N=73x+3=53y+2とおける.ここで53を法とする合同式を考えよう.
 まず与式は次のように書かれる.
  73x+353y+2mod53
 この式は20x1と変形される.
 ここから最終的にはxmod53という式を得たい.そこで,左辺の20xの係数を割れるように,右辺に53の倍数を足したり引いたりする.
 ここからの途中計算は人によって変わるだろう.単純な例として20x1+53とすれば両辺を4で割ることができて,5x13という式を得る.あるいは20x1159だと気づけば,一気に20で割ることもできる.
 いきなり答えが出ては解説としてはつまらないので5x13から続けよう.次は右辺を5で割り切れる数にしたいので5x1353とするのがよいだろう.こうすればx845を得るので,N=73×45+3=3288だとわかる.


(確認問題)最初にmod 73を取った場合,同じ結論になることを確かめよ.

確認問題の答え
 最初の式は53y1mod73である.yの係数(の絶対値)は小さいほどよいので20y1とするのが良いだろう.
 このあとは20y725y1855y1162とするのが自然だろう.
 あるいは最初から20y220y1162とすればもっと早い.
 なお係数20は大きな素因数を持たないので非常に扱いやすいが,この値があまりよくない場合には126y1から始める方がよい場合もある.これから始めると,例えば次のような変形が考え得る.
126y727y47y77y1162
 
練習問題

 次の条件を満たす最小の正整数を答えよ.
(1) 29で割ると4余り,41で割ると11余る
(2) 47で割ると22余り,73で割ると40余る
(3) 30で割ると1余り,37で割ると7余る
(4) 60で割ると12余り,63で割ると36余る

(1)の答え
 29x+4=41y+11に対して,mod 29で合同式を考える.
12y712y36y326
 よって41×26+11=1077
 
(2)の答え
 mod 47で合同式を考える.
21y187y6147y21
 よって73×21+40=1573
 
(3)の答え
 mod 37で合同式を考える.(注:mod 30を取ると,両辺を2,3,5で割ることができない.なるべく約数の少ないものを法とする方が無難である.)
7x6105x15
(もちろん30x6からスタートしてもよい.すぐに5x1となるので,これでも簡単である.)
 よって30×15+1=451
 
(4)の答え
 最初の式は60x+12=63y+36である.両辺を3で割って20x=21y+8としよう.
 mod 20で合同式を考えると,すぐにy812を得る.
 よって63×12+36=792
 

 次は,もう少し難しい(というか面倒な)連立合同式である.

練習問題

 次の条件を満たす最小の正整数を答えよ.
(1) 10で割ると3余り,11で割ると5余り,12で割ると9余る
(2) 5で割ると3余り,7で割ると5余り,11で割ると7余り,13で割ると11余る.

 (2)は工夫するとそこまで面倒ではないので,考えてみてほしい.

(1)の答え
 まずは10x+3=12z+9を使おう.(10,12が共通の約数2を持つので,先にこちらの条件を使ったほうが数が小さくなる.)
 mod 10で考えてz3を得るので10x+3=12z+7=60t27となる整数tが存在する.
 次に60t27=11y+5を解いていけばよい.mod 11で考えてt2を得る.
 60×227=93
 
(2)の答え
 5x+3=7y+5=13w+11を変形して5x2=7y2=13w2である.つまり5×7×13t2と置くことで,3つの条件を使い切ったことになる.
 あとは,455t2=11z+7を解けばよい.mod 11で考えてt5を得る.
 455×52=2273
 
OMCの例題
OMC095(D)
 

中国剰余定理

中国剰余定理

 k個の整数m1,,mkが,どの2つも互いに素であるとき,連立合同式
{xa1modm1xa2modm2xakmodmk
を満たす整数xが,m1m2mkを法として一意に存在する.

 証明は省略する.
 この定理は,要するに2つのことを言っている.第一にmod miの部分が全て互いに素なら必ず解を持つこと.第二に,そのような解はmod miを法として唯一であること(もう少しわかりやすい表現にすれば,mi 以下の正整数の中でただ一つである).
 mod miの部分が全て互いに素でない場合はどうなるのか?を疑問に持った方は, 高校数学の美しい物語 を参照してほしい.

 次に,この定理に関する注意点を書いておく.
 中国剰余定理は,解の「存在」を保証してくれるものである.その値を「求める」ことについては,何も言及していない.連立合同式を解いて「中国剰余定理よりxが解である」などと書いている答案などをたまに見るが,これは正確ではない.
 また,面倒なことを書くが,インターネット上のいくつかのホームページを見ても,あるいは数学の参考書等を見ても,中国剰余定理の練習問題として連立合同式を挙げていることがあるが,これも(厳密には)正確ではない.もちろんそれらの筆者が混同しているわけではなく,中国剰余定理の具体例を練習問題という名称で出題しているに過ぎないのだろう.しかしそれらの読者の中には,それが中国剰余定理を「用いた」例題であると誤解して,先に挙げたような答案を書くのだと思われる.
 さらに混乱させかねないことを書くが,「中国剰余定理よりxが解である」という表現は必ず誤りかと言うと,そういうわけでもない.例えば次の答案を見よ.

問:2で割ると1余り,3で割ると1余り,5で割ると1余り,7で割ると1余る,500以下の正整数を全て答えよ.


答:1は明らかに条件を満たす.中国剰余定理よりx1mod210のみが解である.すなわち,条件を満たす数は210n+1の形で表され,答えは1,211,421

 この例のように,解の唯一性を保証する意味で「中国剰余定理」を使うのは正しい表記である.なお,この例で「のみ」の部分を省略しても解答として悪くはない.つまり,「中国剰余定理よりxが解である」という表現が直ちに誤りであるというわけでもない.
 以上,面倒な注であるとは思うが,中国剰余定理の意味を正確に覚えておいてほしいと思う.

 もう一つ,この定理に関する注意点である.中国剰余定理は,英語で Chinese remainder theorem と書かれるため,CRT と省略されることがしばしばある(日本語の文献でもしばしばこのように省略される).この表記を自分で使える必要はないが,整数論の分野でCRTと見かけたら Chinese ナントカ theorem だったな→中国剰余定理だな,と思い出せるようにしておこう.

 最後に,中国剰余定理を用いる例題である.

 整数nを正整数kで割った余りをn%kで表す.例えば10%3=1,35%5=0である.このとき,次の値を求めよ.
 n=11000(n%7)×(n%11)×(n%13)

解答
 7×11×13=1001であり,n=11000(n%7)(n%11)(n%13)=n=11001(n%7)(n%11)(n%13)である.
 中国剰余定理より,0a6,0b10,0c12を満たす任意の(a,b,c)に対して,(n%7,n%11,n%13)=(a,b,c)の解が1n1001の中にただ一つ存在する.よって,
 n=11001(n%7)(n%11)(n%13)=(0+1+2++6)(0+1++10)(0++12)=21×55×78=90090
 
オイラーのϕ関数

(やや難)
 n以下でnと互いに素な正整数の個数をϕ(n)で表す(これは一般的な記法である).
 nを素因数分解するとn=p1e1pkekと表されるとき(ただしek0),
  ϕ(n)=n(11p1)(11pk)

解答
 次の連立合同式の解がnを法としていくつあるかという問いである.
{x0modp1x0modpk
 中国剰余定理から,この連立合同式の解はp1p2pkを法として(p11)(p21)(pk1)個存在する.よってn=p1pk×p1e11pkek1を法とすると
  (p11)(p21)(pk1)×p1e11pkek1=p1e1pkek×(11p1)(11pk)個である.
 
OMCの例題
OMC072(F) ←難
 
投稿日:324
更新日:324
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

て
2
779

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 本記事の前提知識
  2. 連立合同式を解く
  3. 中国剰余定理