[logo] Web連載「数学ガールの秘密ノート」
Share

第475回 シーズン48 エピソード5
平方剰余とルジャンドル記号(前編) ただいま無料

登場人物紹介

:数学が好きな高校生。

テトラちゃんの後輩。 好奇心旺盛で根気強い《元気少女》。言葉が大好き。

ミルカさん:数学が好きな高校生。 のクラスメート。メタルフレームの眼鏡に長い黒髪の《饒舌才媛》。

図書室

ここはの高校。いまは放課後。

が図書室に入ると、 話をしていたクラスメートミルカさんと後輩のテトラちゃんがこっちを向いた。

ミルカ「やっと来たか」

テトラ「せんぱーい! こっちです! お待ちしてました!」

「ねえテトラちゃん。ここは図書室なんだから、大きな声を出しちゃだめだよ」

テトラ「あっ、そ、そうですよね。すみません……つい」

ミルカ「遅かったな」

テトラ「先輩のことをお待ちしてたんですよ」

「あ、そうなんだ」

テトラフェルマーの小定理の話をミルカさんもしてくれるということで、 先輩がいらっしゃるのを待ってたんです」

ミルカ「話はすぐに終わるんだが、テトラが『おあずけ』と命じるので我慢していた」

テトラ「そ、そんなこと言ってませんよぅ!」

フェルマーの小定理

p は素数で、 np と互いに素な整数とする。

このとき、

np11(modp)

が成り立つ。

ミルカ「フェルマーの小定理の証明は、以前一緒に追った(第400回参照)」

テトラ「はい。数学的帰納法を使いましたね」

「先日はテトラちゃんのイメージを形にするような証明を作ったよ(第473回参照)」

テトラ「そうです。たとえば p=7 のときだと、 n=1,2,3,4,5,6 のどれを使っても、みんな p1 回目の《ジャンプ》で、 1 にぴったり着地する。 その不思議ポイントから考えをスタートしました」

7 を法とする世界で n を掛けるたびに《ジャンプ》する様子 n=11111111n=21241241n=31326451n=41421421n=51546231n=61616161

ここで、 xy という《ジャンプ》は、 《xn 倍して p で割った余り》が y になることを意味する。

「最後のラスボスを倒すのには手間取ったけどね(第474回参照)」

ミルカ「その証明は、さっきテトラから聞いたよ」

テトラ「それで……ミルカさんのお話とは?」

ミルカ「テトラの観察は《n を繰り返し掛ける》ところにあった。 n を掛けるたびに《ジャンプ》をするという比喩を使い、 1 から始めて p1 回目の《ジャンプ》で 1 に着地する。 まさにそれはフェルマーの小定理の主張だ」

「……」

テトラ「……」

ミルカ「ではここで視点を変える。 《ジャンプ》を表す写像 fn を考えよう」

《ジャンプ》を表す写像 fn

p を素数とし、 np と互いに素な整数とする。

集合 PP={1,2,3,,p1} で定義し、 P から P への写像 fnfn(x)=nx で定義する。

「つまり、 fn(x)=nx というのは、 nxp で割ったときの余りだよね?」

ミルカ「そうだ。 念のためにいっておくと、 nx{0,1,2,3,,p1} であり、 0P だから、 fnP から P への写像であるというためには、 xP のとき nx0 であることを示す必要がある。 まあ、これは読者の練習問題でいいだろう。 ところで、テトラは fn は何だかわかるのかな」

テトラ「はい。 fn がどんなものかはわかります。 たくさん練習しましたから。 たとえば、 p=7n=2 のとき、 fn つまり f2 はこうなります。 f2(x)2 倍した x7 で割った余りをとればいいからです」

p=7n=2 のときの fn x123456f2(x)246135

f2(1)=22×12(mod7)f2(2)=42×24(mod7)f2(3)=62×36(mod7)f2(4)=12×41(mod7)f2(5)=32×53(mod7)f2(6)=52×65(mod7)

「うん、 fn はわかるよ。でもわざわざ fn と名前を付ける意味はないよね。 だって nx と書けばいいんだから」

ミルカ「私が fn と名前を付けたのは、 カギになる主張を一言で言いたいからだ」

「カギになる主張?」

ミルカ「それは、

 写像 fnP から P への全単射ぜんたんしゃである

という主張だよ。 別の言い方として、

 写像 fn は集合 P 上の置換である

といってもいい」

《ジャンプ》は全単射

テトラ「ど、どういう意味でしょう?」

「写像 fn は、 1,2,3,,p1並べ替えると言ってるんだよ、テトラちゃん」

テトラ「ははあ……こういうことですか。 p=7n=2 の例でいうと、

  • 1f2 によって 2 に移り、
  • 2f2 によって 4 に移り、
  • 3f2 によって 6 に移り、
  • 4f2 によって 1 に移り、
  • 5f2 によって 3 に移り、
  • 6f2 によって 5 に移るので、
結局は、 1,2,3,4,5,62,4,6,1,3,5 に並べ替える?」

写像 fn(x)=nx による x=1,2,3,,p1 の並べ替え (p=7,n=2)

「そうだね。 全単射だから《もれなく、だぶりなく》移されてくる。 だから並べ替えになる」

テトラ「あれ? それって、どんな np でも? そんなこといえるんですか?」

「そりゃそうだよね。だって、 np は互いに素なんだから」

テトラ「えっえっ?」

ミルカ「そこで引っかかるなら、ちゃんと示す価値がありそうだ」

問題

p を素数とし、 np は互いに素とする。 P={1,2,3,,p1} のとき、 P から P への写像 fn(x)=nx は全単射になることを示せ。

テトラ「わからなくなってしまいました……」

ミルカ「どこまでならわかっている?」

テトラ「はい。 np が互いに素のとき、 anbn(modp) から ab(modp) がいえることまではわかっています。 p と《互いに素》な n なら、 両辺を《割れる》んです」

「それだよ」

ミルカ「そこだな」

テトラ「えっ、えっ、えっ?」

テトラちゃんミルカさんを見比べるように顔を振る。

ミルカ「君が、まず単射性を示す」

ミルカさんはそう言ってを指さした。

「テトラちゃんがいま言ったことは、 そのまま fn が単射であることの証明につながるよ。 a,bP の要素として、 fn で移した先が等しいと仮定する。 つまり、 fn(a)=fn(b) を仮定する。これは fn の定義から an=bn ということで、 anbn(modp) になる。テトラちゃんがいま言った通り、両辺を n で割れるから、 ab(modp) がいえる。 ab1 以上 p1 以下だから、 a=b になる。 P の要素 a,b に対して fn(a)=fn(b)ならばa=b が示されたから fn は単射だね」

テトラ「あ……《移った先が等しいなら、もとも等しい》。 つまり fn は《だぶりなく》移す……つまり単射です」

ミルカ「そこから全射性はすぐに言える。 P は、要素がちょうど p1 個ある有限集合で、 p1 個の要素が《だぶりなく》移るのだから、 移った先も p1 個になる。 ところが P の要素はぜんぶで p1 個しかないから……」

テトラfn は《もれなく》移す全射にもなってます!」

ミルカ「単射かつ全射。ゆえに fnP から P への全単射」

問題(再掲)

p を素数とし、 np は互いに素とする。 P={1,2,3,,p1} のとき、 P から P への写像 fn(x)=nx は全単射になることを示せ。

解答

xP とする。 p は素数であり、 nxp で割り切れないので、 積 nxp で割り切れない。 すなわち nx0 なので、 fn(x)=nxP である。

a,bPfn(a)=fn(b) を満たすとすると、 anbn(modp) が成り立つ。 np は互いに素なので、 ab(modp) が成り立つ。 ab1 以上 p1 以下なので、 a=b である。よって、 fn は単射である。

Pp1 個の要素を持つ有限集合なので、 単射 fnPp1 個の要素を移した先は、相異なる p1 個の P の要素である。 P の要素は全部で p1 個なので、 fn は全射である。

したがって、 fnP から P への全単射である。

(証明終わり)

フェルマーの小定理?

「ところで 《fn は全単射》 から何がいえるの?」

テトラ「フェルマーの小定理のお話ですよね?」

ミルカ「写像 fn(x)=nxP 上の全単射だから、 {1,2,3,,p1}={1n,2n,3n,,(p1)n} が成り立つ」

「そうだね」

テトラ「はい、順番は変わるかもしれませんが、 1,2,3,,p1 という p1 個の要素を持つ集合ですよね」

ミルカ「そこで全要素をすべて掛け合わせると、 1×2×3××(p1)=1n×2n×3n××(p1)n から、 1×2×3××(p1)1n×2n×3n××(p1)n(modp) となり、 (p1)!np1×(p1)!(modp) となる。 p は素数なので、 (p1)!p と互いに素。 よって、両辺を (p1)! で割って左右を交換すると、 np11(modp) となり、フェルマーの小定理が証明できた」

テトラ「あらららっ!!」

フェルマーの小定理の証明

写像 fn(x)=nxP={1,2,3,,p1} から P への全単射なので、 1n×2n×3n××(p1)n=1×2×3××(p1) である。 すなわち np1×(p1)!(p1)!(modp) となる。 (p1)!p と互いに素だから、 np11(modp) を得る。

(証明終わり)

「なるほどねえ……この証明は、 数学的帰納法による証明とも、 ループを使った証明とも違うね。 いったい何が違うんだろう。 n 倍して p の剰余をとるという写像 fn(x)=nx の何が効いているんだろうね」

テトラ「何だか……視野が広いと感じました」

「視野?」

テトラP 全体を見てる……みたいな?  fn を使って 1,2,3,,p1 を置き換えると、 1n,2n,3n,,(p1)n が得られますけれど、 変わっているのは順序だけ。だから全部掛けても変わらない……というところが効いているんですよね?」

「そうだね」

テトラ「ミルカさんのご説明を聞いていると、 1,2,3,,p1 という《p と互いに素》なメンバーたち一人一人に《n 倍して剰余を取る》という指をさして、 あっちいけー! こっちいけー! と命じているイメージが浮かびました。 そうすると、 1n,2n,3n,,(p1)n が得られるんですっ!」

テトラちゃんは、大きく手を動かして、あっちいけー! こっちいけー! と興奮気味に語った。

「確かにね」

テトラ「きゃうんっ!」

テトラちゃんが子犬のような声を上げた。

いつのまにか、 司書の瑞谷先生が近づいていて、 テトラちゃんの後ろから肩をポンと叩いたのだ。

瑞谷先生「お静かに」

テトラ「あっ、す、すみません……」

ミルカ「静かにしろと命じられることもある」

その日の僕たちは、いったん引き上げることにした。

図書室

次の日。

が図書室で計算をしていると、 テトラちゃんがやってくるのが見えたので、 は手を振った。

「テトラちゃん!」

テトラ「……」

「どうしたの。元気ないね」

テトラ反省しているんです

「え?」

テトラ昨日は大声を出しすぎました。テトラはとても・・・反省しています。お恥ずかしい

「でも、そんなに小声にならなくてもいいと思うよ。普通に話そうよ。それは?」

テトラ「村木先生からの《カード》です。でも、《表》と《裏》があるんですっ!」

テトラちゃんは手にしていた《カード》を僕の前に置いた。

《表》と《裏》には、そっくりだけど、違う問題が書かれていた。

村木先生の《カード》

カード(表)

a,b,c は実数で、 a0 ではないとする。 次式を満たす実数 x が存在する条件を求めよ。 ax2+bx+c=0

カード(裏)

p を奇素数とする。

a,b,c は整数で、 ap と互いに素とする。 次式を満たす整数 x が存在する条件を求めよ。 ax2+bx+c0(modp)

「なるほど。 この《表》の方は簡単だね」

テトラ「はい。この《表》って要するに 二次方程式の判別式の話です」

「うん……」

テトラ「《裏》はすごく《表》に似ています。 条件も似ていて、式の形も似ていて、問われていることは同じです!  あたしでも《表》はわかります。でも、この、《裏》は、さっぱりわかりません!!」

「テトラちゃん。声」

テトラ《裏》は、さっぱりわかりません!

「《表》は僕たちがよく知ってるし、導くこともできる。 でも《裏》は違う。何が問われているかはわかるけれど、 どうすればいいかはわからない」

テトラ「はい」

「僕は思うんだけど、これは村木先生からのチャレンジだね、きっと」

テトラ「チャレンジ?」

「つまりね、《表》を本当に・・・理解しているなら、 《裏》もわかるはずだろう?……そういうチャレンジ」

テトラ「それは、同じ解法が使えるということでしょうか?」

「いや、そこまではわからない。 でも、《裏》への手掛かりが見つかることを期待して、 とりあえずは《表》をていねいに進んでみようよ」

テトラ「《表》の方ならあたしもできますっ! あっ! ……できますっ!

カード《表》を考えよう

カード(表)(再掲)

a,b,c は実数で、 a0 ではないとする。 次式を満たす実数 x が存在する条件を求めよ。 ax2+bx+c=0

「じゃ、テトラちゃん、どうぞ」

テトラ「はい。《表》の答えなら、すぐに出せます。 二次方程式 ax2+bx+c=0 が実数解を持つのは、 判別式である b24ac0 以上のときです。 ですから、実数 x が存在する条件は、 b24ac0 です!」

「うん、それは正解」

テトラ「はいっ!」

「正解なんだけど…… それは、テトラちゃんが覚えていた判別式を頭から取り出して答えたんだよね?」

テトラ「確かにそうです。 あたしは判別式 b24ac を覚えていて、 実数解を持つ条件は判別式が 0 以上ということも覚えています」

テトラちゃんは両手で頭を押さえながら言った。

「もちろんそれは正しいんだけど、 いまの僕たちは《裏》に進む手掛かりがほしいんだ。 《判別式が 0 以上》という答えが出てきただけだと、 そこからどこにも行けない」

テトラちゃんにそう言いながら、《裏》の説明を読み返した。

テトラ「で、では、これではどうでしょう。 解の公式を使うんです。 二次方程式 ax2+bx+c=0 の解は、 x=b±b24ac2a と書けます。 この式を見ると、 x が実数であるためには、 ルートの中身が 0 以上であればいいですから、条件は b24ac0 になります!」

「そうだね。それも正しいよ。 正しいけれど、解の公式を手掛かりにするのは難しそうだ」

テトラ「そうですか……」

「僕たちは《裏》に進む手掛かりがほしい。 そこは整数の世界、特に《p を法とする世界》だ。 そう考えると、 解の公式をその世界に直接持って行くのは難しそうだ」

テトラ「どうしてでしょう」

「解の公式には、ルートが出てくる。 《p を法とする世界》でのルートとは何だろう。 それから 2a で割る割り算も出てくる。 2ap と互いに素だから割り算もできそうだけど、 それを分数で書くのもちょっと」

テトラ「あたし、《表》が簡単だといいましたけど、 違いますね。あたし、わかってないです」

は少し考える。

「いや、テトラちゃんのヒントからいけそうだ。 判別式から解の公式にさかのぼったように、解の公式からさらにさかのぼってみよう」

テトラ「さかのぼる?」

「解の公式を導くときに使う平方完成を行うんだ! 割り算もルートも使わずにできるだけ進んでみる。 判別式の直前まで、ね」

テトラ「ははあ……!」

「まず、 a0 だから 4a0 で、 ax2+bx+c=0 の両辺を 4a 倍した 4a2x2+4abx+4ac=0 は、もとの方程式と同値になる」

テトラ「すみません、先輩。いま、どうして 4a を掛けたんですか?  ふつうの平方完成は、 a で割って x2+bax+ca=0 としませんでしたっけ?」

「《表》はそれでも解けるけど、 でも、 a で割ると分数が出てきちゃう。 さっきも言ったけど、《裏》は整数の世界だから、分数をあまり出したくない。 掛け算だけなら、整数の世界でも安心して使える」

テトラ「なるほどです……《裏》を見ながら《表》を進むんですね」

「それで、 4a2x2+4abx+4ac=0 を平方完成すると、 (2ax+b)2b2+4ac=0 つまり、 (2ax+b)2=b24ac になる。ここで X=2ax+b と置くと、 ax2+bx+c=0 を満たす実数 x が存在することは、 X2=b24ac を満たす実数 X が存在することと同値になる。 x があれば X=2ax+b を計算すればいいし、 逆に X があれば、 2a0 だから x=Xb2a で戻せるからね」

テトラ「なるほど。 X2=b24ac を満たす実数 X が存在する条件は b24ac0 になります。 これで判別式が出てくるんですね。 でも、これは《裏》の手掛かりになるんでしょうか」

b24ac0 の一歩手前が役に立ちそうだ」

テトラ「一歩手前……」

「《X2=b24ac を満たす実数 X が存在する》という部分だよ。

 《b24ac が、ある実数の平方・・になっている》

といえば《裏》でも使えそう。ルートも割り算も出てこない。 実数の世界では、《ある実数の平方になっている》ことと 《0 以上である》ことが同じだから、 条件を b24ac0 と言い換えられたわけだ」

《表》の解答

4a0 なので ax2+bx+c=0()4a2x2+4abx+4ac=0 と同値である。平方完成すると、 (2ax+b)2b2+4ac=0 となるので、 (2ax+b)2=b24ac である。 ここで X=2ax+b と置くと、 を満たす実数 x が存在することは、 X2=b24ac() を満たす実数 X が存在することと同値である。 なぜなら、 を満たす実数 x が存在すれば、 X=2ax+b を満たし、 逆に を満たす実数 X が存在すれば、 2a0 ではないので 2ax=Xb を満たす実数 x が存在し、この x を満たすからである。

よって求める条件は、 b24ac0 である。

テトラ「《裏》への手掛かりは《平方完成》と《X2=b24ac を満たす実数 X が存在する》ですねっ!」

「そうなるね!」

テトラ「《裏》に進みましょうよ!」

カード《裏》を考えよう

カード(裏)(再掲)

p を奇素数とする。

a,b,c は整数で、 ap と互いに素とする。 次式を満たす整数 x が存在する条件を求めよ。 ax2+bx+c0(modp)

「《平方完成》と同じことを、 《p を法とする世界》でやってみよう」

テトラ「はいっ!」

こうやって、テトラちゃんは《裏》の解答を作り上げた。

《裏》の解答

p は奇素数なので、 2p は互いに素である。 また、仮定から ap と互いに素である。 したがって、 4ap と互いに素であり、 ax2+bx+c0(modp)()4a2x2+4abx+4ac0(modp) と同値である。 平方完成すると、 (2ax+b)2b2+4ac0(modp) となるので、 (2ax+b)2b24ac(modp) である。 ここで、 X=2ax+b とおくと、 を満たす整数 x が存在することは、 X2b24ac(modp)() を満たす整数 X が存在することと同値である。 なぜなら、 を満たす整数 x が存在すれば、 X=2ax+b を満たし、 逆に を満たす整数 X が存在すれば、 2ap と互いに素なので 2axXb(modp) を満たす整数 x が存在し、この x を満たすからである。

よって求める条件は、 X2b24ac(modp) を満たす整数 X が存在する ことである。

テトラ「できました!」

「できたね! ぴったり同じだ!」

  • 《表》の解答は《X2=b24ac を満たす実数 X が存在する》
  • 《裏》の解答は《X2b24ac(modp) を満たす整数 X が存在する》

テトラ「二つの《宝箱》はそっくりです! こう書いてもいいですよね?」

  • 《表》の解答は《X2=b24ac を満たす実数 X が存在する》
  • 《裏》の解答は《X2=b24ac を満たす整数 X が存在する》

「そうだね!」

テトラちゃんが、そこで顔を曇らせた。

テトラ「ちょっとお待ちください。えーっと、蒸し返してすみませんけれど、 《表》では b24ac0 という書き方ができました。 でも《裏》では?」

「そうだよね。僕もそこが引っかかる。 《裏》で僕たちが言えたのは

  b24ac がいわば《p を法とする世界の平方数・・・》である

という条件だけだ。《表》のように b24ac0 みたいには書けない」

テトラ「《表》と《裏》で、《平方完成》というそっくりの道をたどってきて、 そっくりの《宝箱》を見つけたのに、 開ける呪文が違うみたいですね……」

「《p を法とする世界の平方数》がその呪文になるのかな……」




参考文献

この記事は期間限定で「ただいま無料」となっています。

ひと月500円で「読み放題プラン」へご参加いただきますと、 470本以上の記事がすべて読み放題になりますので、 ぜひ、ご参加ください。


参加済みの方/すぐに参加したい方はこちら

結城浩のメンバーシップで参加 結城浩のpixivFANBOXで参加

(第475回終わり)

(2026年7月24日)

[icon]

結城浩(ゆうき・ひろし) @hyuki


『数学ガール』作者。 結城メルマガWeb連載を毎週書いてます。 文章書きとプログラミングが好きなクリスチャン。2014年日本数学会出版賞受賞。

Twitter note 結城メルマガ Mastodon Bluesky Threads Home