0

OMC対策(N分野:フェルマーの小定理)

29
0

本記事の前提知識

 基本的な合同式が使えることを前提とする.より具体的には, この記事 の問題1,2がある程度解ければ十分である.  

フェルマーの小定理(基本編)

 OMCにおいて,フェルマーの小定理は非常に重要である.OMCの仕様上,整数値しか解答として受け付けないためである.
 例えばある問いの答えが21000であるとき,数学オリンピックや大学受験の問題であれば,そのまま解答できるだろう.しかしOMCではそうはいかない.OMCでは,例えば次のような問われ方をする.「求めた値を素数997で割った余りを解答してください.」
 つまりフェルマーの小定理を使えることは,OMCにおいてはスタートラインだと言っても過言ではない.
 では早速,その定理を紹介しよう.  

フェルマーの小定理

 素数pと,pの倍数でない正整数aについて,ap11modpが成り立つ.

 フェルマーの小定理は,次のように表現されることも多い.

 素数pと整数aに対して,apamodpが成り立つ.

 個人的にはこちらの方が簡潔で好みだが,定理1の表現の方が実用性は高い.
 実際に問題を解いてみよう.

 21000997で割った余りを求めよ.


(解)合同式はmod997とする.
 フェルマーの小定理より29961であり,21000=2996×241×16=16

 補足をしておく.この問題であれば,apaの形式を用いて解いても大差ない.実際,21000=2997×232×23=16となる.
 しかし一般的には,定理1の表現(つまりap11)の方が使い勝手は良い.
 次の例題はどうだろう.

 2997k997で割った余りを求めよ.


 合同式はmod997とする.
(解1:apaを用いる)
 2997k=(2997)997k12997k1である.k1回同じことを繰り返すと,2997k12であることがわかる.

(解2:ap11を用いる)
 997k996で割った余りは1である.よってある整数nが存在して2997k=(2996)n×2と表すことができ,2997k2である.

 解1はうまく工夫して解いているが,解2は単純に996で割った余りを考えればよい.この問題であれば,解1でも上手に解けているが,「29972に置き換える」よりは「指数部分を996で割る」ほうが,方針が明快だろう.
 勿論,状況に応じてどちらも使えることが望ましいが,基本的には解2が優ることが多い.練習問題を解いてみよう.

(1) 2102+3103+5105を素数103で割った余りを求めよ.
(2) 素数pに対して(p+2)p+2pで割った余りを求めよ.
(3) 素数p5に対して(p3)(p2)p1pで割った余りを求めよ.
(4) 2100009991で割った余りを求めよ.(※9991は素数ではない.)

(1)のヒント
 フェルマーの小定理を適用して,2102a3103b5105cとなる数a,b,cをそれぞれ求めよう.
 
(1)の解答
 合同式はmod103とする.
 フェルマーの小定理より 2102131033510553=125である.
 よって2102+3103+51051+3+12526である.
 
(2)の解答
 (p+2)p+22p+223modpである.
よって,p=2のとき余り0p=3のとき余り2p=5のとき余り3p=7のとき余り111以上の素数pに対しては余り8である.
 
(3)のヒント
 (p2)p1p1で割った余りを求めたい.合同式の性質を活用しよう. 
 
(3)の解答
 (p2)p1p1で割った余りを求めたいが
  (p2)p1(1)p1=1modp1
である(5以上の素数は奇素数なのでp1は常に偶数).
 よって求めるべき値は(p3)1=p3である.
 
(4)のヒント
 9991を素因数分解して,それぞれの素因数pに対して210000pで割った余りを求める.
 その後,連立合同式を解けばよい.(連立合同式の解き方がわからなければ,この問題は飛ばすのが吉である.)
 
(4)の解答
 9991=100232=97×103である.
 法を97として,210000=296×104+16216=6553661
(なおこの計算は,97を法とすれば1003であることを利用して,655366×32+55×3+36とすれば簡単に計算できる.)
 法を103として,210000=2102×98+424=16
 よって,方程式97x+61=103y+16の整数解を求めればよい.mod97を取れば6y45となり,2y15112と計算していけばy=56を得る.よって5784が答えである. 
 

フェルマーの小定理(応用編その1)

 改めてフェルマーの小定理の式を見よう.ap11であった.
 この式からすると,指数がp1以上でなければフェルマーの小定理は適用できないように見えるが,実際はもう少しだけ応用が利く.例えば次の例題である.

 2100を素数103で割った余りを求めよ.


 合同式はmod103とする.
 2100xとなる整数xを求めたい.式2100xの両辺を4倍すると
  21024x4x1104
となり,x26である.

 このように,合同式の性質をうまく活用することで,指数がp1未満の場合でも,フェルマーの小定理を活用することができる.なお,本解答は
  21002100×104=2102×2626
と書くこともできる.あるいは,分数の合同式が使えるのであれば
  210021002102=141044=26
と書くことも可能だが,これは上級者向けだろう.
 少しだけ練習問題を用意した.計算が面倒なものもあるが,合同式の扱いに慣れる練習だと思って取り組んでみてほしい.

(1) 素数p3に対して(p2)p2pで割った余りを求めよ.
(2) 2102+3103+5105を素数107で割った余りを求めよ.
(3) 2202×3303×5505を素数103で割った余りを求めよ.

(1)の解答
 (p2)p2(2)p2xとする.両辺を2倍することで
 (2)p12xとなり,フェルマーの小定理より2x1である.
 pは奇素数なので1p2で割り切れる.よってxp12
 
(2)の解答
 mod107とする.
 21022102×1082=2106×72987
 31033103×108=3106×44
 51055105×215=5106×4343
 よって87+4+4327. 
 
(3)のヒント
 実は(2)がちょっとしたヒントである.2202×3303を変形することができる.
 
(3)の解答
 mod103とする.
 22×33=1085であることを使えば,2202×3303×5505=108101×55055606である.
 5606xの整数解を求めたい.両辺56倍してからフェルマーの小定理を適用すると,56x1となるが,56103で割った余りを考えると72x1である.
 以下,72x104,9x1390,x1093と変形していけばよい.答えは93である.
 

フェルマーの小定理(応用編その2)

 OMC対策としては不要かもしれないが,証明問題の対策についても書いておこう.
 次の問題は,フェルマーの小定理を適用して解くこともできる.

京都大(2021)

 pが素数ならば,p4+14は素数でないことを示せ.

解答
 p5のとき,p4+141+14mod5より,p4+145で割り切れる.p4+14は明らかに5より大きいので素数でない.
 p=5のときは,54+14=639.これは3で割り切れるので素数でない.
 

 フェルマーの小定理を大学受験で使ってよいのかについては諸説ある.実際,上の問題であればmod3で場合分けするだけで解けるのだから,フェルマーの小定理を持ち出すのは少し大げさな感じがする.
 受験する大学のレベルにもよるから,一概には言えないかもしれないが,一般論として,フェルマーの小定理はあまり使わない方がよいだろう.(もしくは,フェルマーの小定理の証明を覚えておいて,それをきちんと記述するという裏技もあり得る.)
 ほぼ同じ方針ではあるが,類題を用意した.

 pが素数ならば,p2224は素数でないことを示せ.

解答
 p23のとき,p2224124mod23より,p222423で割り切れる.
 p=23のときは,2322245で割り切れるため素数でない(確かめよ).
 

 もう一題,フェルマーの小定理を利用した超有名問題がある.
 そちらを練習問題として後に残し,先に,自作の類題を見ていただこう.

 任意の素数pに対して,次の条件を満たすある正整数n3が存在することを示せ.
(条件)3n+4n25pの倍数である.

ヒント
 任意の素数pに対して,3n+4n250となるような正整数nが存在するということである.
  
解答
 n=p+1のときを考えると,pを法として3p+1+4p+12532+42250である.つまり3p+1+4p+125pの倍数である.
 

 次の問題が,先ほど書いた「超有名問題」である.解答はインターネット上に(動画も含め)いくらでも存在するので,わからなければ各自で調べてほしい.

IMO(2005)

 数列a1,a2,
  an=2n+3n+6n1
で定める.この数列のどの項とも互いに素であるような自然数をすべて決定せよ.

 最後にOMCの例題を載せておく.

OMCの例題
OMC185(B)
OMC101(E)
投稿日:44
OptHub AI Competition

この記事を高評価した人

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

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

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

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

投稿者

て
2
782

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. 本記事の前提知識
  2. フェルマーの小定理(基本編)
  3. フェルマーの小定理(応用編その1)
  4. フェルマーの小定理(応用編その2)