他のメモへのリンク集。リンク集を飛ばして、このページの前書きへ。本文の目次へ。21、22などの数字は、メモの番号です。
![]()
『遊びの数論58』の続き。誤字脱字・間違いがあるかも。

![]()
2026-05-04 1 ÷ 5 = 0.33333… 非常識は面白い!
なぜ 1/3 = 0.33333… ではシンプルに「3」が反復されるのに、
1/7 = 0.142857 142857 142857…
は複雑(6桁周期のループ)なのか? 感覚的には 1/3 は簡単な分数だけど 1/7 は複雑だから、という気もする。けど、
1/11 = 0.090909…
は 1/7 よりもっと複雑な分数のはずなのに、小数で書くと、比較的シンプルな「09」の反復。
この現象の原因は、「数字の書き方」――あまりに慣れ切ってしまい、普段意識すらしない「10進法」というシステムそのもの――に関連している。例えば、常識的には割り切れるはずの 1/5 = 0.2 は、16進法では
1/5 = 0.33333… (hex)
という無限小数になるし、複雑に思えた 1/7 は、8進法では
1/7 = 0.11111… (octal)
となる(あるいは、7進法では 1/7 = 0.1 と割り切れる)。要するに 1/p を N 進法で小数表記するとき、結果が単純か複雑かというのは、数 p の選択だけによって決まることではなく、 p と N の相対的な関係によって決まる。その意味で「単純さ・複雑さ」は絶対的なものではない。
とはいえ、もし「循環小数がややこしくなること」を「不便」と考えるなら、10進法は少し不便なシステムで、12進法や16進法などが比較的便利といえるかもしれない(実際、長さの単位などで12進法を使ってる国もあるし、時刻は世界的に12進法・60進法だ)。
![]()
このピクニックの予定目的地は、原始根の概念と関連している。
けど今回は、たわいもないお遊びを…
とりあえず16進数で 1 ÷ 5 を計算してみたい。
| Hex | A | B | C | D | E | F |
|---|---|---|---|---|---|---|
| 10進表記での値 | 10 | 11 | 12 | 13 | 14 | 15 |
1 そのものは 5 で割れないので、普通の(10進数バージョンの)筆算と同様に、商として「0.」を立てて「割られる数」の末尾に「0」を付け、 10 を 5 で割ることを考える。
0. 3
┌───────────
5 │ 0x10
F
この 10 は、もちろん16進法の「10」つまり 0x10 であり(0x は16進数であることを強調する記号)、10進法の「10の位」の「1」が 10 を意味するように、16進法の「16の位」の「1」は 16 を意味する(0x10 = 16)。よって 5 で割ると商は 3 で 1 余る。 5 × 3 = 15 は16進法では 0xF であり(【表1】参照)、 0x10 − 0xF = 1。要するに 16 − 15 = 1 だよ、と。
0. 3
┌───────────
5 │ 0x10
F
────
1
この余った 1 の末尾に、普通の筆算と同様に「0」を付けると、再び 0x10 を 5 で割る計算に。商に 3 が立って、同じことの繰り返しになる。
0. 33
┌───────────
5 │ 0x10
F
────
10
F
──
1
というわけで、16進数の割り算 1 ÷ 5 = 0x0.33333… は、概念的には別に難しくない。
![]()
せっかくなので16進数の 1 ÷ 7 もやってみましょう。
0. 2
┌───────────
7 │ 0x10
E
────
2
0x10 = 16 を 7 で割ると、商は 2 で 2 余る。
0. 24
┌───────────
7 │ 0x10
E
────
20
1C
──
4
で 0x20 = 32 を 7 で割ると、商は 4。 7 × 4 = 28 = 0x1C で 4 余る。
0. 249
┌───────────
7 │ 0x10
E
────
20
1C
──
40
3F
──
1
0x40 = 64 を 7 で割ると、商は 9 で 1 余る。これで最初と同じ「1」に戻ったので、ここからはループで、
1/7 = 0x0.249 249 249…
となる。
![]()
有理数を小数で書くと「循環小数」になることは基本的(有限小数になる場合は、末尾の「0」が循環するとでも解釈すればいい)。実際、「p での割り算」の各ステップを考えれば、「商(0 の場合も含む)が立った後の余り」の末尾に「0」を付けて、再びその数を p で割るのだから、特定のステップでの商(そしてそれ以降での挙動)は、前のステップでの余りのみによって決まる。ところが p で割ったときの余りは 0, 1, 2, ···, p − 1 の p 種類しかないのだから、遅かれ早かれ既出の余りと同じ余りが出て、そこからループが始まる。
「余り 0」は「割り切れること」なので、もし割り切れずに無限小数になるのなら、 1, 2, ···, p − 1 の p − 1 種類の余りの一部または全部が、一定の順序でリピートする。余りのバリエーションは p − 1 種類しかないので、「循環の周期」(循環節の長さ)は、最大でも p − 1。
循環の周期が最大になる具体例は、10進数の 1/7。
0.142857
┌───────────
7 │ 10
7
──
30 [余り 3]
28
──
20 [余り 2]
14
──
60 [余り 6]
56
──
40 [余り 4]
35
──
50 [余り 5]
49
──
1 [余り 1]
この筆算を次のように分析することができる:
1 ÷ 7 は 0 余り 1
10 ÷ 7 は 1 余り 3
100 ÷ 7 は 14 余り 2
1000 ÷ 7 は 142 余り 6
10000 ÷ 7 は 1428 余り 4
100000 ÷ 7 は 14285 余り 5
1000000 ÷ 7 は 142857 余り 1 (振り出しに戻る)
あるいは同じことだが(商を無視して余りだけに注目すると):
10 ≡ 3 (mod 7)
102 ≡ 2 (mod 7)
103 ≡ 6 (mod 7)
104 ≡ 4 (mod 7)
105 ≡ 5 (mod 7)
106 ≡ 1 (mod 7)
mod 7 は「7 で割った余りで分類された世界」なので、 10 と 3 は同類と見なされる。よって、例えば 102 ≡ 2 の代わりに 32 ≡ 2 と書いても、全く同じ意味。
「7 で割って 3 余る数」つまり「7 の倍数より 3 大きい数」は 7k + 3 の形を持つ(k は整数)。そのタイプの数は、何であろうと、平方すれば
(7k + 3)2 = (7k)2 + 2⋅7k⋅3 + 32 ≡ 9 ≡ 2 (mod 7)
となって、 7 で割ると 2 余る。ここで一つ目の合同記号(≡)において、その左側の第1項 (7k)2 と第2項 2⋅7k⋅3 を無視した。どちらの項も 7 の倍数。 7 で割った余りを考えるのだから、 7 で割り切れる部分は無視していい。
より一般的に、 mod 7 では 10x の代わりに 3x と書いても同じ意味。結局、上記のことは、こう整理される:
31 ≡ 3, 32 ≡ 2, 33 ≡ 6, 34 ≡ 4, 35 ≡ 5, 36 ≡ 1 (mod 7)
すなわち mod 7 においては、 3 は 6 乗して初めて ≡ 1 になる(0 乗を別にすると)。 ax ≡ 1 (mod p) を満たす最小の正整数 x を
mod p における a の位数
という。この例では 3 の位数は 6。 mod p におけるある数 a の位数は a の選択によって異なり得るが、上記の理由から、最大でも p − 1。 p が 3 以上の素数のとき、「理論上可能な最大の位数」(つまり位数 p − 1)を持つ a が、実際に一つ以上、存在する。そのような a は p の原始根と呼ばれる。用語の便宜上、ここでは、同じ a を mod p の原始根と呼ぶこともある(あるいは「mod p での原始根」「mod p における原始根」等々)。
〔参考〕 p が素数の場合、「p の原始根 a」というのは、概念的には「mod p における 1 の原始 p − 1 乗根 a」を略したもの。 mod p において a は、 p − 1 乗されて初めて ≡ 1 になるから。例えば「7 の原始根」(mod 7 において、6乗されて初めて ≡ 1 になる)は「1 の原始6乗根」(6乗されて初めて = 1 になる)に似ている。
3 は 7 の原始根。さらに 10 ≡ 3 (mod 7) なので――つまり 10 と 3 は mod 7 の観点では「同じ」なので―― 10 も 7 の原始根。10進法において、 7 で割る計算がややこしく、 1/7 が長い周期の循環小数になる理由は、「10進数」の「10」が 7 の原始根だから。
![]()
同じ理由から、 3進数で小数表記した場合も 1/7 の循環節の長さは、可能な最大値(つまり 6)になる。素朴に考えると「3進数には 0, 1, 2 の 3 種類の桁しかないのだから 3 桁以内に循環が始まるのでは?」と思えるかもしれない。しかし「同じ桁が複数回、出現すること」と「桁のパターンが循環すること」を混同してはいけない。さもないと「10進数には 10 種類の桁しかないので、円周率も √2 も、最大でも10桁以内に循環小数になる」という、ばかげた結論になってしまう!
π = 3.14159265…
には、確かに最初の小数8桁だけでも 1 や 5 が繰り返し現れるけど、それは「循環小数」とは別問題。
論より証拠、実際に3進数で割り算してみましょう。 7 = 2⋅3 + 1 なので、 7 は3進数では「21」。3進数であることを強調するときは (21)3 のように書くことにする。
0.0
┌───────────
21 │ 100
1 も 10 も 21 では割れないので、実質的な割り算を始める前に商「0.0」を立てて、割られる数「1」の末尾に「0」を二つ付ける。 (100)3 = 32 = 9 は (21)3 = 7 で割れる: 商が 1、余りが 2。
0.01
┌───────────
21 │ 100
21
───
2
最下位桁の 0 から 1 は引けないので、隣(真ん中)の桁から (10)3 = 3 を借りてきて引き算。真ん中も桁は 3 を貸そうにも自分自身 0 なので、そのまた隣の(最上位)桁から 3 を借りてきて、そのうち 2 をキープし 1 をまた貸し。最上位桁は、全財産を貸してしまったので実質 0。便宜上の表記をすると (023)3 から (21)3 を引くことに当たる。
0.0102
┌───────────
21 │ 100
21
───
200
112
───
11
「20」は 21 で割れないので、商 0 を立てて末尾に 0 を付ける。 (200)3 = 18 を (21)3 = 7 で割ると、商が 2 で余りが 4 = (11)3 に。
0.010212
┌───────────
21 │ 100
21
───
200
112
───
110
21
───
120
112
───
1
(110)3 = 12 を (21)3 = 7 で割ると商が 1、余りが 5 = (12)3。最後に (120)3 = 15 を (21)3 = 7 で割ると商が 2、余りが 1。これで振り出しに戻ったので、
1/7 = (0.010212 010212 010212…)3
を得る。理論通り、周期 6 で循環。
検算 上記の3進小数について、(3進数での)小数第6位までの値を求めると:
0/3
+ 1/32
+ 0/33
+ 2/34
+ 1/35
+ 2/36 = 104/729 = 0.142661…
小数第7位以下を切り捨てているので、この値は 1/7 = 0.142857… より少し小さい。(3進数での)小数第6位に 1 を足すなら、分子が 1 増えて
105/729 = 0.144032…
となるが、この値は 1/7 より少し大きい。つまり上記で得た循環小数は、少なくとも(3進数での)小数第6位まで、全部の桁が正しい。周期 6 の純循環小数なので、 6 桁目まで正しければ完全に正しいはず。この計算で合ってるようだ!
検算その2 次の方法を使うと、簡潔に直接的な検証ができる。2進数を 4 桁ずつ束ねて16進数にするように、 3進表記された 1/7 を6桁ずつ束ねて「729進法」(36 = 729)で表記すると、
0.δδδ···
の形の(循環周期 1 の)循環小数になる。ここで δ は10進数の 104 に等しい値を表す一つの桁。実際、最初の検算を部分的に再利用して、
y = (0.010212 010212 010212…)3 = 104/729 + 104/7292 + 104/7293 + ···
と置き、両辺を 729 倍して:
729y = 104 + 104/729 + 104/7292 + 104/7293 + ···
下から上を引いて 728y = 104 を得る。ゆえに:
y = 104/728 = 1/7
![]()
1/7 を「729進法」で表記するってのは、かなり突拍子もない話だが、 3 は 7 の原始根ってことと一応関連している。 1/7 の循環小数が複雑、という事実と、本質的には同じ現象が起きている。(続く)
![]()
2026-05-06 mod pn の原始根 50 ÷ 49 = 1.02 04 08 16 32…
前回の続き。 1/7 = 0.142857 142857 142857… の循環小数は、複雑といえば複雑だが、2桁ずつ区切ると [14][28][57] の反復で 14 → 28 → 56 という倍々の列に近い。というのも 7 × 7 = 49 なので、両辺を 2 倍して 7 × 14 = 98。これを 100 から引くと 2。つまり:
100 ÷ 7 は 14 余り 2 ☆
余りが 2 なので、「割られる数」を 2 倍して:
200 ÷ 7 は 28 余り 4 ← ☆ の関係の2倍
同様に余りが 4 なので、「割られる数」をさらに 2 倍して…
400 ÷ 7 は 56 余り 8 ← ☆ の関係の4倍
…と言いたいところだが、余り 8 なら、そこからもう 1 回「7」を引けるので:
400 ÷ 7 は 57 余り 1
これで余り 1 なので、振り出しに戻る!

上記の現象は 72 = 49 の倍数「98」と「100」の関係に基づいているのだから、 49 で割れば、同様の現象がより直接的に起きる。
1/72 = 0.02 04 08 16 32…
この出だしの部分は、印象的で面白い!
残念ながら(?)、 64 128 256… と続くわけではない。分数(有理数)の小数表記は、循環しなければならないので、当たり前だが。
仮に 1/49 を筆算で計算すると、各ステップの「余り」(商を立てて引き算した残り)は 0, 1, 2, ···, 48 のどれかになる―― 49 で割った余りなんで、まぁ、当然かと。そのうち「余り」が 0 というのは「割り切れた」という意味だが、10進法では 1/7 は割り切れないのだから(無限小数)、そのまた 1/7 の 1/49 が割り切れるわけはなく、どこまで行っても「余り」が 0 にはならないのは明白だろう。
0 にならないだけでなく、どのステップでも、「余り」が 7 の倍数(0, 7, 14, 21, 28, 35, 42)になることもない――理由は単純だけど、この事実は意外と気付きにくいと思われる。結果として 0 から 48 までの 49 種類の「余り」のうち 7 種は不可能、可能な「余り」は 49 − 7 = 42 種。従って、この場合、最大でも 42 桁以内に循環が始まる。
![]()
10進法では 1/49 の筆算のどのステップでも、余りが 7 の倍数にならない。というのも、「余り」として 7 の倍数が出てくる、というのは、
10000 ÷ 49 = 何らかの整数の商 余り 7
のような事態だが、それは、
10000 = 49 × 整数 + 7
を意味する。もしもこれが起こり得たなら 10000 は「49 の倍数 + 7」ということになるが、 49 の倍数は 7 の倍数でもあるので、そのときには 10000 は「7 の倍数 + 7」になってしまう。「7 の倍数 + 7」は、もちろん 7 の倍数なので、これは 「10000 は 7 の倍数」言い換えれば「10000 は 7 で割り切れる」ことを意味する。それが本当なら 1/7 は割り切れるはずだが、これは事実に反する!
10000 を「49 の倍数 + 14」や「49 の倍数 + 21」などと仮定しても、同様の矛盾が生じる。 10000 に限らず、
1, 10, 100, 1000, 10000, 100000, ···
のどれかを 49 で割った余りが 7 の倍数――という仮定は不合理であり、実際には起こり得ない。つまり 1 ÷ 49 の筆算を延々と続けたとしても、どのステップでも、出てくる余りは 7 の倍数以外に限られる。
要するに 10x を 49 で割った余りは、決して 7 の倍数にはならない(x = 0, 1, 2, ···)。
一般には、整数を 49 で割れば、余りは 0, 1, 2, ···, 48 の 49 種類の整数のどれにもなり得る。しかし 10x を 49 で割る場合には、そのうち
「7 の倍数」の余り(0, 7, 14, 21, 28, 35, 42)
は駄目。 0, 1, 2, ··· には、七つに一つの割合で 7 の倍数が含まれるので、「可能」な余りは、七つにつき六つに減る。結局、一般の場合に考え得る 49 種類のうちの 6/7 の 42 種類だけが、余りとなる可能性を持つ。
全く同様の理由から 10x を 73 = 343 で割るときにも「7 の倍数の余り」は不可能。可能な余りは、
73 × 6/7 = 72⋅6 種類
に限られる。一般に 10x を 7n で割ったときに生じ得る余りの種類は(n は任意の正整数):
7n × 6/7 = 7n−1⋅6
より一般的に、 p を 3 以上の素数(5 を除く†)とすると、 10x を pn で割ったときに生じる可能性がある余りの種類は:
pn × (p − 1)/p = pn−1(p − 1)
というのも、もしも 1/p2, 1/p3 などを割る計算の途中で「p の倍数の余り」が生じたとすると、 1/72 についての議論と全く同様の理由から、 1/p がどこかで割り切れて有限小数になってしまう――これは事実に反するから、実際には「p の倍数の余り」は(10x を pn で割る場合に関しては)不可能。よって可能な余りの種類は、本来の pn より少し減る: p 個に 1 個の割合で「駄目」な余りがあって、「可能」な余りは p 個につき p − 1 個の割合。
† ここで 5 を除外する理由は、 10 が 5 で割り切れるから。「無限小数にならない」という点で、 10x を 5n で割ったときの現象は、 10x を一般の pn で割ったときの現象と、性質が異なる。「10進法での割り算」という話題にこだわらなければ、 5 を特別扱いする必要はない。
![]()
上記のことは、一見、限定的・特殊的な話題のようだが、とある重要な基礎理論と関係している。「可能な余りの種類の数」は、実は「オイラーのファイ関数」というものの出力であり、近代的な言葉で言うと、ある種の「乗法群」の
以下の議論で扱う問題は、難しく言うと「その乗法群は単元生成か?」「mod p の原始根は mod pn にも拡張されるか?」ということだが、簡単に言うなら 1/p2 のような形の分数を小数で書くと、どんな周期で循環が起きるか?という観察と、関連している。
1 を pn で割る計算では「可能な余り」の選択肢が少し狭くなる。それはいいとして、「可能な余り」というのは「理論的に可能性がある」ってだけで、実際にそれらの余りが生じるかどうかは別問題。現実には、「可能な余り」が全種類生じるケースもあれば、そうでないケースもある。どっちになるか、どのようにして決まるのか?
![]()
Dirichlet–Dedekind の『整数論講義』補遺5, §128 に沿って記す。
x ≡ y (mod m) という式(記号)は、「x も y も m で割った余りが同じ」という意味。例えば 22 ≡ 15 (mod 7)。この「等しい余り」を r とするなら、
x も y も m の倍数 + r
と、言い換えてもいい。等式 x = y が成り立てば、もちろん x ≡ y も成り立つけど、 x ≠ y でも x ≡ y は成り立ち得る。従って x ≡ y (mod m) は、等式とは違うコンセプト。合同式と呼ばれ、言葉では「法 m において x と y は合同」などと表現される。
次の性質は、自明に近い。
補題1 p を任意の正整数とする。正の整数 a, b が a ≥ b を満たすなら、
x ≡ y (mod pa)
が成り立つとき、
x ≡ y (mod pb)
も成り立つ。
〔例〕 p = 2, a = 4, b = 3。例えば、
21 ≡ 37 (mod 24)
が成り立つ(左辺も右辺も 24 = 16 の倍数より 5 大きい)。このとき、
21 ≡ 37 (mod 23)
も成り立つ(左辺も右辺も 23 = 8 の倍数より 5 大きい)。
証明 A = pa, B = pb と置くと A は B の倍数で(1 倍の可能性も含む)、 A = kB と書くことができる(k = pa∕pb = pa−b は整数)。 x ≡ y (mod A) は、 x も y も A で割った余り(それを r とする)が同じ、という意味なので x も y も A の倍数 + r、つまり x も y も kB の倍数 + r。
kB の倍数は当然 B の倍数でもあるので、 x も y も B の倍数 + r でもあり、 x ≡ y (mod B) が成り立つ。∎
次の補助命題は、それ自体としてはあまり重要ではないが、本題の攻略の足場となる。
補題2 p を 3 以上の素数、 n を 1 以上の整数とする。任意の整数 h について:
(1 + hpn)p ≡ 1 + hpn+1 (mod pn+2)
〔例〕 p = 3, n = 2, h = 5 のとき mod p4 つまり mod 81 において:
左辺 = (1 + 5⋅32)3 = 463 = 97336 ≡ 55
右辺 = 1 + 5⋅33 = 1 + 135 ≡ 55
証明 二項定理によって左辺を展開すると(第4項以降はどうせ消滅するので、細かく見る必要ない):
1p + [p/1!]⋅1p−1⋅(hpn) + [p(p − 1)/2!]⋅1p−2⋅(hpn)2 + [p(p − 1)(p − 2)/3!]⋅1p−3⋅(hpn)3
+ ··· + [p(p − 1)(p − 2)···(p − (p − 1))/(p − 1)!]⋅1p−(p−1)⋅(hpn)p−1 + (hpn)p
ここで二項係数を表す分数(第2項以降の係数)は約分されれば整数になるが、その整数はどれも p の倍数。なぜなら分子は素因子 p を持つが、分母の 1!, 2!, ···, (p − 1)! はどれも素因子 p を含まないので、分子の p は約分によって消えない。そして第4項以降は、順に (hpn)3 = h3p3n, (hpn)4 = h4p4n, ···, (hpn)p = hpppn の倍数なので(そして仮定により p ≥ 3 なので)、どの項も p3n の倍数。従って mod p3n で考えると、第4項以降は無いの同じ。こう整理される:
左辺 ≡ 1 + p(hpn) + [p(p − 1)/2]⋅(h2p2n)
≡ 1 + hpn+1 + [(p − 1)/2]⋅h2p2n+1 (mod p3n)
仮定により n ≥ 1 なので 3n ≥ n + 2。よって補題1から、上記の合同式は mod pn+2 でも成り立つ。しかも、第2項は pn+2 の倍数なので、 mod pn+2 においては、無いのと同じ。このことから、補題2の合同式
左辺 ≡ 1 + hpn+1 (mod pn+2)
を得る。∎
![]()
もし仮に mod p2 での原始根 ɡ が存在するなら、 mod p2 の全種類の数(p の倍数を除く)は ɡx の形で表現される(それが原始根の定義: もし仮に原始根 ɡ が存在するのなら、そのたった一つの元 ɡ と掛け算だけを使って、つまり ɡ や ɡ⋅ɡ や ɡ⋅ɡ⋅ɡ などの形で、考えている世界の全部の元が生成される)。そのとき、 mod p の全種類の数(p の倍数を除く)も同じ ɡx の形で表現される――というのは、当然のことと感じられる。
〔例〕 p = 3 とする。もし ɡx (mod 9) が、入力 x に応じて 1, 2, 4, 5, 7, 8 のどれとも合同になるような、そんな ɡ が存在するのなら、 mod 9 で成り立つ合同式は mod 3 でも成り立つのだから(補題1)、同じ ɡ は、入力 x に応じて ɡx ≡ 1 (mod 3) と ɡx ≡ 2 (mod 3) のどちらの値も取り得るはず。だからこの ɡ は、 mod 3 での原始根でもあるはず。
つまり mod p2 の原始根は mod p での原始根でもあり、同様に考えると、 mod p3 の原始根は mod p2 の原始根でもあり、一般に mod pn+1 の原始根は mod pn の原始根でもある――直観的には、そうなりそう。けれど、
〔ア〕 「mod pn+1 の原始根は mod pn の原始根でもある」
としても、逆に
〔イ〕 「mod pn の原始根は、自動的に mod pn+1 の原始根でもある」
と言えるかどうかは、別問題(例えばの話、「4 の倍数は偶数」だからといって「偶数は自動的に 4 の倍数」とは言えない)。もし〔イ〕の性質が(たとえ無条件には成り立たないとしても、何らかの付帯条件を付ければ)成り立つとしたら、 mod p の原始根の存在(証明済み)を土台に、 mod pn の原始根の存在(あるいは存在条件)を証明する道が開ける。
よって重要なのは〔イ〕の真偽だが、それを考えるには、とりあえず簡単そうな〔ア〕の証明を試みるべきだろう。もし〔ア〕の証明の全ステップが「同値・同値」で「逆も真」なら、自動的に〔イ〕も証明される。一方、もし〔ア〕の証明のどこかに「逆も真」とはいえないステップがあるなら、そこに「どういう条件で逆も真になるか?」という付帯条件を特定する鍵があるかもしれない。
問題1 p を 3 以上の素数、 n を 1 以上の整数とする。もし仮に pn+1 の原始根 ɡ が存在するなら、その ɡ は pn の原始根でもあることを示したい。
問題1は「もしそういう ɡ が存在するなら」という仮定上の議論に過ぎず、そのような ɡ が例外なく常に存在するかどうかは、まだ分からないけど、小さい数値例で試す限りでは、いつも条件を満たす ɡ が見つかる。
〔例1〕 ɡ = 2 は 52 の原始根。実際、 mod 25 の全 20 種類(5 の倍数を除外するので 25 種類ではない)の元を生成し、20乗して初めて ≡ 1 になる。 2 自身から始めて次々 2 倍すると(25 以上になったら 25 で割った余りに置き換える):
21 ≡ 2, 22 ≡ 4, 23 ≡ 8, 24 ≡ 16 (≡ −9)
25 ≡ 7, 26 ≡ 14 (≡ −11), 27 ≡ 28 ≡ 3, 28 ≡ 6
29 ≡ 12, 210 ≡ 24 ≡ −1 (mod 25)
これで −1, 2, 3, 4; 6, 7, 8, −9; −11, 12 の 10 種類が生成された。さらに 2 倍を続ければ −2, −4, −8 等々となって、同じ順序で符号を逆にした残りの 10 種類の元が生成され、末尾で 220 ≡ 1 となる。――ここで重要なのは、同じ ɡ = 2 を mod 5 で解釈した場合にも、
21 ≡ 2, 22 ≡ 4, 23 ≡ 8 ≡ 3, 24 ≡ 6 ≡ 1 (mod 5)
となって、 5 の原始根となること。より一般的に「pn+1 の原始根 ɡ は pn の原始根でもある」ことの証明が、問題1の趣旨。
解 仮定により mod pn+1 での ɡ の位数†は、 mod pn+1 の全種類の整数(p の倍数を除く)の個数、すなわち
(p − 1)pn
に等しい。一方、 mod pn での ɡ の位数を δ とすると:
ɡδ ≡ 1 (mod pn)
つまり ɡδ は pn の何らかの倍数(それを hpn とする)より 1 大きい:
ɡδ = 1 + hpn 【★】
両辺を p 乗して補題2を使うと:
ɡδp = (1 + hpn)p ≡ 1 + hpn+1 (mod pn+2)
よって補題1から:
ɡδp ≡ 1 + hpn+1 ≡ 1 (mod pn+1)
従って δp は、 mod pn+1 における ɡ の位数 (p − 1)pn の倍数‡:
δp = (p − 1)pn × 整数
両辺を p で割って:
δ = (p − 1)pn−1 × 整数 ‥‥①
他方において、 δ は「mod pn の元としての ɡ」の位数なので、 mod pn の全種類の整数(p の倍数を除く)の個数、すなわち
(p − 1)pn−1
に等しいか、またはその約数である:
δ = (p − 1)pn−1 ÷ 整数 ‥‥②
〔注〕 等しい場合も「約数」といえる(例えば 20 は 20 の約数)。そのとき「÷ 整数」の「整数」は 1。
ɡ の位数 δ はもちろん正なので、条件①と②を両立させるためには、両方の式の「整数」は 1 でなければならず、従って:
δ = (p − 1)pn−1 ‥‥③
すなわち ɡ は mod pn においても原始根。∎
† mod m におけるある元 a の位数 b とは、 ax ≡ 1 (mod m) を満たす最小の正整数。つまり a は b 乗すると初めて ≡ 1 になる。もし仮に a が mod m の原始根だとしたら、 mod m の全ての種類の元(m と互いに素でないものを除く)が ax の形で表される。原始根が存在するのは、特定の場合に限られる。 p が 3 以上の素数の場合に限って言えば、必ず mod p には原始根が存在する。
‡ 位数の基本性質による。 mod pn+1 の全種類の元(p の倍数を除く)の個数を ε とすると、 ε = pn+1 × (p − 1)∕p = pn(p − 1)。仮定により ɡ は pn+1 の原始根なので、 ε は ɡε ≡ 1 (mod pn+1) を満たす最小の正整数(つまり mod pn+1 における ɡ の位数)。 ɡδp ≡ 1 という事実を踏まえると、正の整数 δp はこの ε に等しいか、または ε の倍数(2 倍以上)。
![]()
では逆に ɡ が pn の原始根なら(すなわち③が成り立つなら)、 ɡ は pn+1 の原始根でもある、と言えるか?
上記の推論を逆向きに進めようとうする場合、問題となるのは【★】の部分。
ɡδ = 1 + hpn と ɡδ ≡ 1 (mod pn)
が同値であることは明白だが、 mod pn+1 で考えた場合、同じ等式 ɡδ = 1 + hpn が、整数 h の値次第で、
ɡδ ≡ 1 (mod pn+1) ないし ɡδ ≢ 1 (mod pn+1)
の、どちらをも含意し得る。
実際、もし h が p の倍数なら(h = kp としよう)、
ɡδ = 1 + hpn = 1 + (kp)pn = 1 + kpn+1
は pn+1 の倍数より 1 大きいので、
ɡδ ≡ 1 (mod pn+1)
が含意される。一方、もし h が p の倍数でないなら(h = kp + ℓ としよう。ここで ℓ は h を p で割ったときの余りで 1 ≤ ℓ ≤ p − 1)、
ɡδ = 1 + hpn = 1 + (kp + ℓ)pn = 1 + kpn+1 + ℓpn
は pn+1 の倍数より 1 + ℓpn 大きいので、
ɡδ ≡ 1 + ℓpn ≢ 1 (mod pn+1)
が含意される。
ℓpn は pn, 2pn, 3pn, ···, (p − 1)pn のどれかなので、 mod pn+1 の観点では ≡ 0 ではない。
ɡ が pn+1 の原始根であるためには、 ɡ を (p − 1)pn 乗(つまり δp 乗)して初めて ≡ 1 (mod pn+1) になることが必要。もしも δ 乗しただけで ≡ 1 (mod pn+1) になってしまったら、その ɡ は pn+1 の原始根ではない。要するに、「h は p の倍数」という事態は、都合が悪い。その場合には、
ɡδ ≡ 1 (mod pn+1)
になってしまうので。
〔例2〕 p = 5, n = 1 とすると δ = (5 − 1)50 = 4⋅1 = 4。さて ɡ = 2 は mod 5 でも mod 25 でも原始根(〔例1〕参照)。 2 ≡ 7 (mod 5) なので、 ɡ = 7 は mod 5 の原始根、と言っても同じこと。
71 = 7 ≡ 2 (mod 5)
72 = 49 ≡ 4 (mod 5)
73 = 343 ≡ 3 (mod 5)
74 = 2401 ≡ 1 (mod 5) ← ɡδ ≡ 1 (mod pn) に当たる
――ちゃんと 1, 2, 3, 4 が全種類、生成される。では 7 は mod 25 でも原始根だろうか?
72 = 49 ≡ 24 (mod 25)
73 = 343 ≡ 18 (mod 25)
74 = 2401 ≡ 1 (mod 25) ← ɡδ ≡ 1 (mod pn+1) に当たる
――たった 4 乗で ≡ 1 (mod 25) になってしまい、 ɡ = 7 は mod 25 では原始根ではない! mod pn+1 の原始根は自動的に下位の mod pn でも原始根だが、逆に mod pn の原始根は、上位の mod pn+1 でも原始根になるとは限らない。
例2の問題点は、
ɡδ = 1 + hpn
に当たる式、すなわち
74 = 2401 = 1 + 480⋅51
の h = 480 = 96⋅5 が p = 5 で割り切れてしまうところ。その結果、
74 = 1 + 96⋅52 ⇒ 74 ≡ 1 (mod 25)
が成立してしまう。 mod 25 の原始根は 20 乗して初めて ≡ 1 になる必要があるのに…。
![]()
p4 の原始根 ɡ は mod p3 でも原始根で、 mod p2 でも mod p でも原始根――というように、上位から下位へはフリーパスで進める。しかし逆に pn の原始根 ɡ は、必ずしも上位の mod pn+1 では原始根にならない。
問題2 p を 3 以上の素数、 n を 1 以上の整数とする。 ɡ が pn の原始根なら、その位数 δ = (p − 1)pn−1 は、
ɡδ = 1 + hpn
を満たす。ここで h は何らかの整数。同じ ɡ が mod pn+1 でも原始根になるためには、「この h が p の倍数ではない」という条件が必要(上述)。この条件だけで、十分か。この条件によって「上位」への帰納法が有効になるか。
解 mod pn+1 での ɡ の位数を ε とすると:
ɡε ≡ 1 (mod pn+1) ‥‥④
よって、補題1から:
ɡε ≡ 1 (mod pn)
従って(位数の基本性質から) ε は δ の倍数:
ε = δ × 整数 ‥‥⑤
さらに、④は
ɡε = 1 + h′pn+1 ‥‥⑥
を含意するので(h′ は何らかの整数)、 ɡε − 1 = h′pn+1 は pn+1 の倍数。
ε は、 mod pn+1 の既約剰余系†の元の個数
(p − 1)pn = δp
の約数でもあるから、条件⑤を考慮すると ε = δ または ε = δp。しかし、もしも ε = δ だとしたら、
ɡε = ɡδ = 1 + hpn
になってしまい、 ɡε − 1 = ɡδ − 1 = hpn が pn+1 が倍数になってしまう――それは h が p の倍数であることを含意し、問題2の仮定に反する。従って ε = δ は不可能であり、 ε = δp でなければならない。ゆえに ɡ は pn+1 の原始根でもある。
さて ɡδ = 1 + hpn の両辺を p 乗して補題2を使うと:
ɡε = ɡδp = (1 + hpn)p ≡ 1 + hpn+1 (mod pn+2)
仮定により h は p の倍数ではないから hpn+1 は pn+2 の倍数ではなく、すなわち:
hpn+1 ≢ 0 (mod pn+2)
∴ ɡε ≡ 1 + hpn+1 ≢ 1 (mod pn+2)
このことと⑥から、
ɡε = 1 + h′pn+1 ≢ 1 つまり h′pn+1 ≢ 0 (mod pn+2)
が成り立ち、従ってこの h′ も p の倍数ではない。
要するに、 pn の原始根 ɡ について、問題2のように「h は p の倍数ではない」と仮定すると、同じ ɡ が上位の mod pn+1 でも原始根となり、そこにおいても(h と同様の立場の整数 h′ について)問題2と同様の仮定が成り立つ。結局、土台となる p の原始根 ɡ についてこの仮定を満たすことができれば、帰納法により ɡ は全ての pn の原始根となる(n = 1, 2, 3, ···)。∎
† mod pn+1 の既約剰余系とは、 mod pn+1 の pn+1 種類の整数のうち、 pn+1 と互いに素なものだけを抜き出した一組。 p は素数なので、 pn+1 と互いに素でない数は、素数 p の倍数だけ: p の倍数が除外され、計 (p − 1)pn = δp 個の元を持つ。 mod pn+1 において原始根があるとすればその位数は δp なので、(mod p における位数の基本性質と同様の理由から) ɡ の位数は δp の約数。もし ɡ の位数が δp なら(δp 自身も δp の約数である)、 ɡ は mod pn+1 においても原始根。もし位数が δp より小さければ、 ɡ は mod pn+1 においては原始根でない。
![]()
任意の奇素数 p について、 mod p の原始根が存在することは既知だが、その全てが、そのまま mod p2 でも原始根になるわけではない。
〔例3〕 例2では p = 5 のときの ɡ = 7 が「駄目」ということを見た。別の例として、 ɡ = 14 は 29 の原始根だが、 292 の原始根ではない。実際、 mod 292 の原始根は 29(29 − 1) = 812 乗して初めて ≡ 1 になるはずだが、 14 は mod 29 でも mod 292 でも、 28 乗するだけで ≡ 1 になってしまう。
とはいえ、 p の原始根の中に p2 の原始根でもあるものが一つでも存在すれば、問題2に基づく帰納法によって、任意の pn の原始根が存在する。(続く)
![]()
2026-05-07 mod pn の原始根(その2)
ɡ が pn の原始根なら(p: 奇素数)、その位数 δ = (p − 1)pn−1 は、
ɡδ ≡ 1 (mod pn) つまり ɡδ = 1 + hpn
を満たすが(h: 何らかの整数)、このとき、もし「h が p で割り切れない」という条件が満たされるなら、 ɡ は pn+1 の原始根でもある(問題2)。しかもその場合、 pn+1 の原始根としての ɡ も同様の条件を満たし、従って ɡ は pn+2 の原始根でもあり、同様に pn+3, pn+4, ··· の原始根でもある!
よって、土台となる n = 1 のケース(mod p)の原始根 ɡ が上記条件を満たしてくれれば、その ɡ は自動的に任意の pn の原始根となる(n = 1, 2, 3, ···)。
以上が前回の成果だが、条件「h が p で割り切れない」の真意が必ずしも透明になっていないし、肝心の「土台のケース」を証明する必要がある。
![]()
帰納法の土台となる n = 1 のケース。 mod p1 つまり mod p の位数は:
δ = (p − 1)p1−1 = p − 1
原始根に限らず mod p の任意の
ap−1 ≡ 1 (mod p) (✽)
が成り立つ(Fermat の小定理)。
ただし一般の(必ずしも原始根ではない)元 a の場合、位数が δ = p − 1 とは限らず、 a の位数は δ の約数、例えば (p − 1)∕2 かもしれない。あるいは p − 1 が 3 で割れるなら (p − 1)∕3 かもしれない。一般に p − 1 が b で割れるなら (p − 1)∕b かもしれない。つまり δ 乗して初めて ≡ 1 になるのではなく、 δ∕b 乗しただけで ≡ 1 になるかもしれない。その場合でも、
a(p−1)/b ≡ 1 (mod p)
が成り立つのだから、その両辺を b 乗すれば、(✽)が成り立つことに変わりない。原始根もそれ以外の元も(✽)を満たすけど、原始根が特別なのは、 p − 1 乗して初めて ≡ 1 になるという点。もし a が原始根なら、 p − 1 より小さい指数では ≡ 1 にならない。一方、もし a が原始根でないなら、 p − 1 より小さい指数(p − 1 の約数乗)で、既に ≡ 1 になる。
いずれにしても(✽)は
ap−1 = 1 + hp つまり ap−1 − 1 = hp
を含意するから、 a が原始根であろうとあるまいと ap−1 − 1 は p の倍数であり、 p で割り切れる。この割り切れた商が h だ――この h をフェルマー商(Fermat quotient)と呼ぶ†。
〔例〕 a = 2 と素数 p = 5 について。 Fermat の小定理から 25−1 ≡ 1 つまり 24 − 1 ≡ 0 (mod 5) が成り立つ。これは、
24 − 1 = 16 − 1
が 5 の倍数という意味。実際 15 は 5 で割り切れる。 15∕5 = 3 がこの場合のフェルマー商(詳しく言えば: 2 を底とする 5 のフェルマー商)。一方、 a = 7 と素数 p = 5 の場合、 75−1 ≡ 1 つまり 74 − 1 ≡ 0 (mod 5) が成り立つ。これは、
74 − 1 = 2401 − 1
が 5 の倍数という意味。実際 2400 は 5 で割り切れる。 2400∕5 = 480 がこの場合のフェルマー商。第一のフェルマー商 3 は p = 5 で割り切れないが、第二のフェルマー商 480 は、もう一度 5 で割り切れる。
もしフェルマー商 h が p の倍数なら(h = kp としよう)、
ap−1 − 1 = hp = (kp)p
は p で 2 回、割り切れる(すなわち p2 で割り切れる)。一方、フェルマー商 h が p の倍数でないなら、 ap−1 − 1 は p で 1 回だけ割り切れるけど p2 では割り切れない。よって問題の条件「h が p で割り切れない」というのは…
ap−1 − 1
は必ず p で割り切れるけど、この数が p2 で割り切れちゃ駄目っ! ということ。 Fermat の小定理によって
ap−1 − 1 ≡ 0 つまり ap−1 ≡ 1 (mod p)
は常に保証されているが、通常の保証より強い「超フェルマー」合同式
ap−1 − 1 ≡ 0 つまり ap−1 ≡ 1 (mod p2)
が成り立ってしまうと、 p2 の原始根を見つけたい場合には都合が悪いのだ。その関係の否定、すなわち
ap−1 ≢ 1 (mod p2)
が成り立つことが必要。
† PrimePages — The Prime Glossary: Fermat quotient
https://t5k.org/glossary/page.php?sort=FermatQuotient
![]()
上記の条件をクリアーすることは、難しくない。実は ap−1 − 1 が p2 で割り切れるのはむしろ珍しいことで、普通は 1 回しか割り切れない。このことを感覚的に把握するため、簡単な数値例で検証してみたい。
p = 3 で a = 1, 2; 4, 5; 7, 8; ··· のときの y = ap−1 − 1 と、フェルマー商 h = y/p を考える。
〔注〕 考えている世界(既約剰余系)では p の倍数が除外されるので、この場合 a の値は 3 の倍数以外。 3 の倍数は ≡ 0 (mod 3) なので、何乗しても ≡ 0 にしかならず、原始根になり得ない。
y = ap−1 − 1 が必ず p で割り切れることが見て取れる(Fermat の小定理の結果)。少なくとも、このサンプルの範囲では、割り切れた商 h が再び p で割り切れること――言い換えれば y が p2 で割り切れること――は、比較的まれ(◈印)。 3 の原始根は、この範囲内では a = 2, 5, 8, 11 だが、そのうち 8 だけが不都合で 2, 5, 11 は、そのまま 32 の原始根になる(従って mod 33, mod 34 などでも原始根)。
例えば a = 2 の累乗は mod 9 において 2, 4, 8, 16 ≡ 7, 14 ≡ 5, 10 ≡ 1 で、 mod 9 の全種類(3 の倍数を除く)の整数 1, 2; 4, 5; 7, 8 を生成し、 6 乗して初めて ≡ 1 になる。 a = 5 の累乗 5, 25 ≡ 7, 35 ≡ 8, 16 ≡ 7, 14 ≡ 5, 10 ≡ 1 もまたしかり。しかるに a = 8 ◈ の累乗 8, 64 ≡ 1 は 2 乗するだけで ≡ 1 になってしまい、 9 の原始根ではない。
(a = 1 ◈ のケースは p がなんであれ y = 1p − 1 = 0 となって、くだらないけど一応 p2 で割り切れる。)
ここでは p = 5, 7, 11 などの数値例は割愛するが、概して p が大きくなると「都合が悪いケース」は、まばらになる。
〔参考〕 Fermat の小定理 ap−1 ≡ 1 (mod p) は a が p の倍数でなければいつでも成り立つが、中にはもっと強い条件 ap−1 ≡ 1 (mod p2) を満たす a も存在する。そのような性質を持つ p は、 a を底(てい)とするヴィーフェリヒ素数(base-a Wieferich prime; Wieferich prime to base a)と呼ばれる(狭義では a = 2 の場合が、単に Wieferich 素数と呼ばれる。 a = 3 の場合は Mirimanoff 素数とも呼ばれる)。 p の原始根 ɡ が mod p2 の原始根にならないケースは、 ɡ を底とする Wieferich 素数と関連する。―― Wieferich 素数についての議論では、特定の底 a に対して条件を満たす素数 p を考えることが多い。一方、 a が pn の原始根になるか否かの議論では、特定の素数 p に対して、条件を満たす底 a を考える。
![]()
p の原始根 ɡ が p2 でも原始根になるための条件は:
ɡp−1 ≢ 1 (mod p2)
言い換えれば:
ɡp−1 − 1 が p2 で割り切れない
ɡ は素数 p の倍数ではないから、ある数 A が p で割り切れないなら、 ɡA も p で割り切れない(逆に ɡA が p で割り切れないなら、もちろん A は p で割り切れない)。同様に:
A が p2 で割り切れない ⇔ ɡA が p2 で割り切れない
そこで A = ɡp−1 − 1 と置くと、満たされるべき条件は:
ɡ(ɡp−1 − 1) = ɡp − ɡ が p2 で割り切れない
すなわち:
ɡp − ɡ ≢ 0 (mod p2) ‥‥⑦
今 f を p の任意の原始根とすると、任意の整数 x について f ≡ f + px (mod p) なので、
ɡ = f + px ‥‥⑧
も p の原始根(問題は、この形の ɡ の中に p2 の原始根にもなるものがあるか)。両辺を p 乗して:
ɡp = (f + px)p = fp + p⋅fp−1⋅px + [p(p − 1)/2]⋅fp−2⋅(px)2 + ···
右辺・第2項以下の各項は p2 の倍数なので:
ɡp ≡ fp (mod p2) ‥‥⑨
結局、条件⑦が満たされない不都合な事態――すなわち
ɡp − ɡ ≡ 0 つまり ɡp ≡ ɡ (mod p2)
が成り立ってしまう状況――とは、⑨を参照すると、
fp ≡ ɡ (mod p2)
の場合。言い換えると、 p のとある原始根 f と(mod p において)合同な原始根 ɡ を選択したとき、もし ɡ が mod p2 において fp と合同になってしまったら、その ɡ は「駄目」―― p2 の原始根ではない。
これで「駄目」になる条件は分かった。では「どんな ɡ を選んでも、全部駄目」という事態は、起こり得るか?
Fermat の小定理から†、
fp ≡ f (mod p) つまり fp = f + Bp
が成り立つ(B は何らかの整数)。⑨に代入して:
ɡp ≡ f + Bp (mod p2)
一方、⑧の両辺は(等しいので)もちろん合同:
ɡ ≡ f + px (mod p2)
上から下を引いて:
ɡp − ɡ ≡ Bp − px ≡ p(B − x) (mod p2)
これを、満たされるべき条件⑦に代入して:
p(B − x) ≢ 0 (mod p2)
∴ B − x ≢ 0 (mod p) つまり x ≢ B (mod p)
すなわち、 p の原始根 f を基準としてそれと(mod p において)合同な原始根 ɡ = px + f を選ぶとき、 x が mod p において B と合同でなければ、その ɡ は「OK」―― p2 の原始根でもある。
この条件なら楽勝っ! だって x は任意の整数なのだから、運悪く Bad な選択肢 x ≡ B (mod p) になってしまっても、単に x を 1 増やすか減らすかすれば、直ちに x ≢ B となって Bad でなくなる。――しかも mod p では x の選択肢が p 種類あって、 Bad な選択肢は、そのうち特定の1種類(≡ B)だけ。例えば p が 100 くらいの値とすると、でたらめに x を選んでも 99% は無問題。不都合が生じる確率は 1∕100 程度に過ぎない。 p が大きくなればなるほど、不都合が生じる確率は小さくなる。万一不都合が生じても x をもう 1 度だけ再選択すれば済むことで、「何度も試行錯誤して、ようやくうまくいった」とか「何度試行してもうまくいかない」といった面倒は、決して起きない。
† Fermat の小定理は、 fp−1 ≡ 1 (mod p) の形で使われることが多いが、その両辺を f 倍すれば fp ≡ f (mod p) となる。
![]()
実用上、 ɡ = f + px の x を 0 として、 p の小さい原始根 f をそのまま pn の原始根 ɡ としても使える。それではうまくいかないケースもまれにあるが、そのときは x を 1 として、 ɡ = f + p とすればいい(つまり最初の選択肢に p を足すだけでOK)。
かくして m が pn の形の場合の m の原始根については、一応問題解決! だが、数論の神秘は奥が深いのである…。(続く)
![]()
2026-05-09 mod pn の原始根(その3) 10 ÷ 81 = 0.123456790 123456790…
1 ÷ 7 は割り切れず、やや複雑な循環小数になる。だから、それをさらに 7 で割った 1 ÷ 7 ÷ 7 つまり 1 ÷ 49 は、ますますややこしい小数になる。直観的には、当たり前。円形のパイを 7 等分するのは困難なのに、ましてや 49 等分なんて無理。
1/7 = 0.142857 142857 ···
1/49 = 0.0204081 6326530 6122448 9795918 3673469 3877551 0204081 6326530 ···
同様に 1 ÷ 11 より 1 ÷ 112 = 1 ÷ 121 は複雑、 1 ÷ 13 より 1 ÷ 132 = 1 ÷ 169 は複雑。一般に p を 7 以上の素数とすると、 1 ÷ p は複雑な小数になるけど、 1 ÷ p2 がさらにややこしい(循環周期がさらに長くなる)のは、直観的には当たり前のように思われる。
ところが意外なことに、 1 ÷ p2 が 1 ÷ p より複雑にならないケースが存在するっ! そのような最初の例 p = 487 は、フランスのデマレ(Desmarest)によって、1852年に記述された†。二つ目の p = 56598313 はコンピューターを使って発見され、1971年に公表された‡。――2026年現在、この種の奇素数は、上記の二つしか知られていない¶。
一見ランダムで面白みのない数「487」に潜む不思議な性質…。これは一体どういう現象なのだろうか。
† E. Desmarest (1852), Théorie des nombres, §143, pp. 289–296
https://gallica.bnf.fr/ark:/12148/bpt6k994948/f299.item
‡ Brillhart et al. (1971), “On the Fermat quotient” in: Atkin & Birch (ed.), Computers in Number Theory, pp. 213–222
¶ Primes p such that 10^(p-1) == 1 (mod p^2)
https://oeis.org/A045616
![]()
1/3 = 0.3333… と 1/9 = 0.1111… はどちらも循環小数の周期が 1。このケースを考慮するなら、 1/p より 1/p2 の方が(循環周期の長さの点で)複雑――という主張は、必ずしも成り立たない。とはいえ p = 2, 3, 5 を別にして 7 以上の素数 p を考えるなら、 1/p より 1/p2 は複雑――というのは、当たり前のように思われる。
1/3 と 1/9 の場合も 1/27 = 0.037 037… は周期 3、 1/81 = 0.012345679 012345679… は周期 9、等々。さらに p で割っていくなら、循環節の長さが p 倍ずつ増える。 1/81 の小数の循環節は印象的な形をしているが、「0123456789」の周期 10 ではなく、 8 が抜けて「012345679」の周期 9。一般に 1∕pn+1 の循環節の長さは 1∕pn のそれと比べて p 倍なので(これは mod pn での 10 の位数と、 mod pn+1 での 10 の位数の関係に基づく)、この場合、周期 10 にはなり得ない。
――しかし、同様の状況で n = 1 の場合、循環節が p 倍にならず長さが変わらない事例が、極めてまれながら存在する。
余談。もし「8」が抜けてるのが不満なら、「123456789」が循環するような分数(有理数)を作ることも可能。そのような数を x とすると、
x = 123456789/109 + 123456789/1018 + 123456789/1027 + ···
なので、両辺を 109 倍して:
109x = 123456789 + 123456789/109 + 123456789/1018 + ···
下から上を引いて:
(109 − 1)x = 123456789
∴ x = 123456789/999999999 = 13717421/111111111 = 0.123456789 123456789…
![]()
p を 3 以上の素数とする。10進法において 1/p の循環節の長さが、理論上可能な最大値 p − 1 になるのは、 10 が p の原始根の場合。その場合、大抵 10 は 2 の原始根でもあるので、 1/p2 の循環節の長さも、理論上可能な最大値 p(p − 1) になる。ただし例外のケースがあって、その一つは Desmarest が見つけた p = 487。その場合 p2∕1 の循環節は p∕1 の循環節より長くならない。 487 のどこが特別なのか?
Desmarest 自身が明記しているように、この例外は、等式
10487−1 = 4872⋅V + 1
によって特徴付けられる(V は、左辺 − 1 を 4872 で割った商。それが割り切れて整数になる)。任意の素数 p と、 p の倍数ではない任意の整数 a は、 Fermat の小定理によって、
ap−1 = p × 整数 + 1 つまり ap−1 ≡ 1 (mod p)
を満たすが、 p = 487, a = 10 の場合、それより強い「超フェルマー」関係
ap−1 = p2 × 整数 + 1 つまり ap−1 ≡ 1 (mod p2)
が成り立つ。そして、この強い関係が成り立ってしまうと、前回見たように、 p の原始根 a が p2 の原始根になれず、どちらの mod でも a の位数が同じになる―― a = 10 の場合の筆算の割り算を考えると、 1 を a で割っても a2 で割っても同じステップ数(等しい位数に当たる)で「余り」が 1 に戻り、どちらでも循環小数の周期が同じになる。「周期が長くならない」という意味において、「複雑さ」が増えない。
10487−1 = 4872 × 整数 + 1 は、
10486 − 1 = 4872 × 整数
と同じ意味。 10486 から 1 を引いた左辺は、
「9」を 486 個並べた 486 桁の数 999···9
だが、その数が 487 で 2 回、割り切れる!
ap−1 − 1 が p で 割り切れるのは、 Fermat の小定理から当然。しかるに、その割り切れた商(フェルマー商)が、もう 1 回 p で割り切れるのは(言い換えると ap−1 − 1 が p2 回割り切れるのは)、珍しい。
同様に、 a = 10, p = 56598313 も ap−1 ≡ 1 (mod p2) を満たす。
〔付記〕 487 がこのような性質を持つ根本的理由について Desmarest はあれこれ考えたらしく、脚注で「487 − 1 = 2⋅35 であり、 487 という数が示す特異性は、この因子 3 に基づくようだ」とコメントしている。当時は狭義の Wieferich 素数[2p−1 ≡ 1 (mod p2) を満たす素数 p の存在]も知られていなかったら、 10p−1 ≡ 1 (mod 102) は「不思議」に感じられただろう。―― 487 − 1 が 35 = 243 の 2 倍に等しいのは、確かに気になる。が、20世紀に見つかった第2の例 56598313 は、
56598313 − 1 = 23⋅3⋅31⋅127⋅599
を満たし、 487 − 1 = 2⋅35 と似た構造を持たない。 = 2⋅35 は「たまたまそうなってるだけ」で、現象の本質と関係ないようだ。
![]()
a = 10 に限らず ap−1 ≡ 1 (mod p2) が成り立つのは、現代の観点でも興味深い。未解決の関連問題も多いらしい。 a を p の原始根とすると、その場合「p の原始根 a が p2 の原始根にはならない」という事態が生じ、 mod p2 での原始根の存在を証明する上では、少々都合が悪い。けれどこの不都合は、容易に解消される。すなわち:
定理1 p を 3 以上の素数、 ɡ を p の原始根とする。もし ɡ が
ɡ ≡ ɡp (mod p2)
を満たすなら、 ɡ は p2 の原始根ではない。一方、上記の合同式を満たさない ɡ は、 p2 の原始根でもある。 ɡ が p2 の原始根にならないケースでも、 ɡ + p をあらためて ɡ と置けば、その ɡ は p2 の原始根になる。――いずれにしても、 p の原始根が一つでも与えられれば、 p2 の原始根 ɡ は容易に見つかる。しかもその ɡ は、 mod p と mod p2 だけでなく、 mod p3, mod p4, ··· でも原始根となる。
証明 p の原始根 ɡ が p2 の原始根になるための必要十分条件は、
ɡp − ɡ ≢ 0 (mod p2) つまり ɡp ≢ ɡ (mod p2)
であるから(前回の⑦式)、
ɡ ≡ ɡp (mod p2)
が成り立つ場合、条件が満たされない。
しかし p の原始根 f が与えられたとき、任意の整数 x に対して ɡ = f + px はどれも p の原始根であり、前回見たように、そのうち x が mod p において「特定の一つの種類の整数」と合同な場合に限って、不都合(ɡ が p2 の原始根にならない事態)が生じる。よって、 f をそのまま ɡ として使おうとして x = 0 と置いた場合、もし不都合が生じても、単に x = 1 として ɡ = f + p を使うことにすれば、不都合は解消される。 0 ≢ 1 (mod p) だから。あるいは x = −1 として ɡ = f − p を使ってもいい。 0 ≢ −1 (mod p) だから。
mod p でも mod p2 でも原始根となる数 ɡ が特定されれば、問題2の帰納法によって、同じ ɡ は任意の mod pn でも原始根。∎
例として、 p = 3 のケースを考えてみる。 3 の原始根は ɡ = 2 の 1 種類のみ。 mod 3 では 2 ≡ 5 ≡ 8 ≡ ··· なので、 5, 8 なども(一般に 3x + 2 の形の整数はどれも)原始根だが、 mod 3 の観点では、それらは全部同じ種類の整数(3 で割った余りが同じ)。一方、 mod 32 つまり mod 9 の観点では 2, 5, 8 は不合同なので(9 で割った余りが異なる)、それらは 3 種類の違う整数。
定理1によると、 3 の原始根 ɡ は、 mod 9 において ɡ3 と合同だと不都合だが、それ以外の場合には 9 の原始根としても有効。
ɡ = 2 ⇒ この ɡ は mod 9 において ɡ3 = 8 と不合同 ⇒ 2 は 9 の原始根
ɡ = 5 ⇒ この ɡ は mod 9 において ɡ3 = 125 ≡ 8 と不合同 ⇒ 5 は 9 の原始根
ɡ = 8 ⇒ この ɡ は mod 9 において ɡ3 = 512 ≡ 8 と合同 ⇒ 8 は 9 の原始根ではない
ɡ = 11 ⇒ この ɡ は mod 9 において ɡ3 = 1331 ≡ 8 と不合同 ⇒ 11 は 9 の原始根
︙
この場合、最初から素直に ɡ = 2 を選択しておけば、それが任意の 3n の原始根となる。仮に不都合な ɡ = 8 を選択してしまったとしても、そのときには p = 3 を足すか引くかして、 ɡ = 11 ないし ɡ = 5 を再選択すれば、不都合は解消される(mod 9 では 11 ≡ 2 なので、 11 を選ぶのは 2 を選ぶのと同じこと)。 3x + 2 の形の数(どれも mod 3 では合同)は 3 の原始根だが、そのうち三つに一つの割合で、 9 の原始根にならない数がある。
別の例として、 p = 5 の場合。 5 の原始根は ɡ = 2 と ɡ = 3 の 2 種類。第一に、 5x + 2 の形の数はどれも 5 の原始根だが、 mod 25 において 25 = 32 = 7 と合同になってしまうと不都合。よって 2, 7, 12, 17, 22 のうち(これら五つの数は mod 5 では合同だが mod 25 では不合同である)、 ɡ = 7 は 25 の原始根ではないが†、それ以外の四つは 25 の原始根。第二に、 5x + 3 の形の数も 5 の原始根だが、 mod 25 において 35 = 243 ≡ 18 と合同になってしまうと不都合。よって 3, 8, 13, 18, 23 のうち 18 は 25 の原始根ではないが、それ以外の四つは 25 の原始根。
最後に p = 7 の例。 7 の原始根は ɡ = 3 と ɡ = 5 の 2 種類。 mod 49 では 37 = 2187 ≡ 31 であり、 57 = 78125 ≡ 19 であるから、 3x + 7 型の 3, 10, 17, 24, 31, 38, 45 の七つは、 31 を除けばどれも 49 の原始根だし、 5x + 7 型の 5, 12, 19, 26, 33, 40, 47 の七つは、 19 を除けば‡どれも 49 の原始根。
† p = 5 は 7p−1 = 2041 ≡ 1 (mod p2) を満たす。つまり base-7 の Wieferich 素数。2026年現在、このタイプの素数は二つしか知られていない。もう一つは p = 491531。
https://oeis.org/A123693
‡ p = 7 は 19p−1 = 47045881 ≡ 1 (mod p2) を満たすので base-19 の Wieferich 素数だが、より強く 19p−1 ≡ 1 (mod p3) が成り立つ。同時に 18p−1 = 34012224 ≡ 1 (mod p3) も成り立つ。 すなわち素数 7 は、 base-18 と base-19 の両方で「超 Wieferich」。
https://oeis.org/A244260
https://oeis.org/A123693
![]()
p = 3, 5, 7 の例では、 p の原始根として素直に小さい数(1 以上 p 未満の整数)を選んでおけば、何の不都合も生じない。もう少し大きい素数 p = 11, 13, 17, 19, 23 についても、同じことがいえる。しかし 1 以上 p 未満の範囲(最小正剰余)で p の原始根を選択すれば常にうまくいくか?というと、必ずしもそうではない。最小の反例は p = 29 のときの ɡ = 14。
冒頭で記したように、 p = 487 の場合、 ɡ = 10 は p の原始根だが p2 の原始根ではない――ということを Desmarest は発見した。このような事例は、 ɡ = 10 に限るなら例外的だが、 ɡ の値を無制限とするなら、それほどまれでもない。何しろ mod p の 1 種類の原始根につき、 p 個に 1 個の割合で p2 の原始根にならないケースが存在するから、大ざっぱに言って、確率 1∕p で不都合があるだろう。確率 1∕p で生じる不都合な数は、大きいかもしれないし、小さいかもしれない。
しかも p が大きくなるにつれ、 p の原始根の種類は増加する傾向がある(単調増加ではないが)。「p が大きければ、確率 1∕p は小さい」といっても、 p の原始根が何種類もある場合、その一つ一つが確率 1∕p で不都合を起こし得るとしたら、トータルではあまり安心できない。具体的に p < 100 における「不都合な小さい原始根」をリストアップすると:
p = 29 のときの ɡ = 14
p = 37 のときの ɡ = 18
p = 43 のときの ɡ = 19
p = 71 のときの ɡ = 11
100 以下の奇素数は 24 個なので、 4 個の事例は「まれ」とはいえない。もっと先まで調べると 1000 以下〚10000 以下〛の奇素数 167 個〚1228 個〛のうち 49 個〚403 個〛が「不都合な小さい原始根」を少なくとも一つ持つ†。
† 次を参照: Primes p that have a primitive root between 0 and p that is not a primitive root of p^2
https://oeis.org/A060503
このリストは p = 2 を含むので、われわれのカウント(奇素数 p だけを考えている)より個数が 1 大きい。それぞれの p に対応する最小の ɡ は:
https://oeis.org/A060504
のみならず、一つの p が「不都合な小さい原始根」を 2 個以上持つ場合もある。
最小の例は p = 367 のときの ɡ = 159 と ɡ = 205。次の例は p = 653 のときの ɡ = 84, ɡ = 120, ɡ = 287, ɡ = 410。上記の統計では、「同じ p の複数の不都合」は重複してカウントされていない。
![]()
「不都合な小さい原始根」のうち、 p = 113 のときの ɡ = 68 は特筆に値する。この ɡ は、 Fermat の小定理
68112 ≡ 1 (mod 113)
を満たすのは当然として、より強い「超フェルマー」合同式
68112 ≡ 1 (mod 1132)
を満たすばかりか、それよりもさらに強い「超々フェルマー」合同式
68112 ≡ 1 (mod 1133)
を満たす! すなわち、次の 206 桁の整数は 1133 = 1442897 で割り切れる。
68112 − 1 = 17417997468608852191588987271141014684452803999335160533400409514501877572785550602077512287675483858264124317778559327912292197811349855213528442751520178796381878338073169899380652237626484652744298725375
この数が 1133 で割り切れることは、コンピューターを使えば一瞬で確かめられる。しかし完全な素因数分解は、比較的難しい。
68112 − 1 = (6856 + 1)(6856 − 1)
の右辺・第1因子は、 y = 688 と置くと、こう分解される:
y7 + 1 = (y + 1)(y6 − y5 + y4 − y3 + y2 − y + 1)
このうち y + 1 は 881⋅518914006417 と分解され、残りの因子が
1133⋅10193⋅P78
と分解される(P78 は 78 桁の素数)。ここに 1133 が含まれている。
ap−1 ≡ 1 (mod p3) の解 a = 68, p = 113 を誰が発見したのかは未詳だが、 Brillhart et al. (1971) には既に収録されている。 https://oeis.org/A134307 のコメントによると、条件 2 ≤ a ≤ p − 1 の下で、 p < 106 の範囲では p = 113 のみが(何らかの a に対して)この合同式を満たすという。 p < 2⋅105 について PARI で検証したところ(付録1)、確かに 113 が唯一だった。
![]()
付録1 PARI/GP のコード例。 ap−1 ≡ 1 (mod p3) を満たす p を探す。
{
my( progress = 0 ); \\ *1
my( t0 = getwalltime() ); \\ *1
forprime( p = 2, 2*10^5,
for( a = 2, p-1, znorder(Mod(a,p^2)) == p-1
&& Mod(a,p^3)^(p-1) == Mod(1,p^3) \\ *2
&& print( a, " mod ", p ) );
if( progress < p\5000, my( t = getwalltime() ); \\ *1
print1( strtime(t-t0), "; ", p, ".. " ); \\ *1
t0 = t; progress = p\5000 ); \\ *1
);
}
*1 の行は、プログレス表示(チェックが終わった p の値と前回からの経過時間)のためのもので、本質的には必要ない。
*2 を単に a^(p-1) % p^3 == 1 ないし (a^(p-1)-1) % p^3 == 0 とするのは、 p が小さい場合には問題ないが、 p が大きい場合には遅過ぎる。上記のコードの実行に関して、 PARI 2.15 (2024) に比べ PARI 2.17 (2025) は圧倒的に速いようだ。
![]()
2026-05-10 奇妙な等式 3√(2 + √) + 3√(2 − √) = 1
3乗すると x になる実数を 3√x で表すことにする(x 自身も実数とする)。
【例】 3√8 = 2, 3√−8 = −2
問題 3√(2 + √) + 3√(2 − √) = 1 を証明せよ。
雰囲気的には、有名なラマヌジャンのパズルに少し似ているが、それよりは簡単かな…?
![]()
解 立方根を処理するには、立方してみるのが自然な発想だろう。
a = 3√(2 + √), b = 3√(2 − √)
と置くと、証明したい式は a + b = 1。とりあえず (a + b)3 を計算してみる。
(a + b)3 = a3 + 3a2b + 3ab2 + b3 ア
の右辺第1項・第4項について:
a3 = 2 + √
b3 = 2 − √
∴ a3 + b3 = 4
よって、アはこうなる:
(a + b)3 = 4 + 3a2b + 3ab2 = 4 + 3(ab)(a + b) イ
さて、任意の実数 x について 3√x の絶対値は、 x の絶対値の立方根に等しい。この問題の規約では 3√x も必ず実数であり、その符号は x の符号と一致する。任意の実数 x, y について、もし x, y が両方とも負でないなら、
3√x × 3√y = 3√(xy)
が成り立つことは明白だが、この問題のルールでは、 x, y の一方または両方が負でも、同じ単純な関係が成り立つ。
従って、
a = 3√(2 + √) と b = 3√(2 − √)
の積 ab は、
3√[(2 + √)(2 − √)]
に等しい(この問題のルールでは)。
(2 + √)(2 − √) = 22 − (√)2 = 4 − 5 = −1
なので、
ab = 3√[(2 + √)(2 − √)] = 3√−1 = −1
となる。イに代入すると、
(a + b)3 = 4 + 3(−1)(a + b) = 4 − 3(a + b)
となって、 a + b を c とすると、こう整理される:
c3 = 4 − 3c ウ
c = 1 は確かに関係ウを満たすので(13 = 4 − 3⋅1)、 c = a + b = 1 が成り立つ(それが証明したいことだった)。ここで a, b はどちらも特定の実数だから、 a + b = c も特定の一つの実数。ウは c についての3次方程式なんで(重複度を含めて)解を三つ持つけど、 c = 1 以外の解は(あるとしても)実数ではないはず。

念のため、明示的にウを解いておく。ウは
c3 + 3c − 4 = 0
と同じ意味だが、 c = 1 はその一つの解なので、左辺の3次式は、多項式として c − 1 で割り切れる。割り算を実行すると:
c3 + 3c − 4 = (c − 1)(c2 + c + 4)
この式の値が = 0 になるためには、
c − 1 = 0 つまり c = 1
が満たされるか、または
c2 + c + 4 = 0 つまり c = (−1 ± √−15)/2
が満たされる必要がある。案の定、ウの解のうち c = 1 以外は実数でなく、題意に適さない。∎
(下に続く)
![]()
2026-05-11 「奇妙な等式」の真相は…
前回取り上げた 3√(2 + √) + 3√(2 − √) = 1 は、いかにも奇妙に思える。複雑そうな二重根号の無理数の和が、整数(それも 1)になるなんて…
上記の式は「負の実数の立方根として、負の数を選ぶ」という「実数ルール」での計算だが、次のように「負の数の立方根」が絡まないように書き換えることもでき†、そうすれば「実数ルール」は無関係:
3√(√ + 2) − 3√(√ − 2) = 1 エ
よってこの現象の根本原因は、「負の数の立方根の選択についての特別なルール」ではない。この変てこな形の等式の正体は何なのか、どこからどうやってそれが生じるのか、その真相を明らかにしたい。
† p が正の数(−p が負の数)のとき、実数ルールでは 3√−p = −3√p と約束する。例えば 3√−27 = −3√27 = −3。正の数 p = √5 − 2 = 2.236… − 2 = 0.236… を考えると、 −p = 2 − √5 = −0.236… は負。最初の式の左辺・第2項では、その −p の立方根が、実数ルールによって −3√p として扱われている。エの左辺・第2項では、同じ値を最初から −3√p の形で書いているので、「負の数の立方根」が絡まない。
![]()
等式エが正しいことを確かめるため(前回と実質同じだが)、 a = 3√(√ + 2), b = 3√(√ − 2) と置くと:
(a − b)3 = a3 − 3a2b + 3ab2 − b3
= (√ + 2) − 3a2b + 3ab2 − (√ − 2) = 4 − 3(ab)(a − b) オ
a, b は正の数の立方根だから、文句なしに
ab = 3√[(√ + 2)(√ − 2)] = 3√[5 − 4] = 1
が成り立ち、オは (a − b)3 = 4 − 3(a − b) と整理される。 c = a − b と置くと:
c3 = 4 − 3c
これは前回のウと同じ等式だから、その先の結論も同じ。
この変な現象の(少なくとも一つの)根源は、上記の等式を整理した3次方程式
c3 + 3c − 4 = 0 (✽)
だ。3次方程式を解く正しい作法は、まず有理数の解が無いかチェックすること。有理数の解が有るとすれば、定数項 4 の約数 ±1, ±2, ±4 のどれか。実際に試せば c = 1 が解であることは容易に分かるので、左辺を分解して (c − 1)(c2 + c + 4) にすることができ、残りの二つの解は、2次方程式に帰する(詳細は前回の通り)。
有理数解があるかもしれないのにその有無を確かめず、いきなり3次方程式の解の公式(いわゆるカルダノの公式)を使うと、有理数解があった場合、面倒な事態になる――この「面倒な事態」が、奇妙な等式の正体!
カルダノの公式とは――。3次の係数が 1 で、2次の項が無い3次方程式
x3 + Px + Q = 0 カ
が与えられたとき、次の補助的な2次方程式を考える:
t2 + Qt − (P/3)3 = 0 キ
補助方程式キの 1 次の係数は、カの定数項 Q をそのまま書いたもの。キの定数項は、カの1次の係数 P を 3 で割って 3 乗して符号を変えたもの。キは2次方程式なので、簡単に解くことができる。キの解を t = u, v とすると、
x = 3√u + 3√v ク
が、もともとの3次方程式カの一つの解(残りの解は、そのバリエーションとして機械的に得られる)。これがカルダノの公式(を簡単に言い換えたもの)。
(✽)をカとすると(未知数 c が x に当たる)、キに当たるのは:
t2 − 4t + 1 = 0
その解は t = 2 ± √5 なんで、結局、クに当たる(✽)の解は:
3√(2 + √) + 3√(2 − √) ケ
カルダノの文脈において補助方程式が実数解を持つ場合、クの立方根は「実数ルール」で解釈される――それが「奇妙な等式」の左辺に他ならない。要するに、(✽)は有理数解「1」を持つのに、それを無視してカルダノの公式に飛び付くと、有理数解「1」が複雑怪奇な形式で表現されてしまう。
このような複雑怪奇な式を簡約して、有理数解としての本来の(簡単な)表現を得るためには、結局「有理数解チェック」が必要。それには、ケのような変な形式を(✽)のような形式に変換しなければならない。カルダノの公式の計算が無駄骨だったばかりが、いったんカルダノ形式にしてしまうと、逆向きに進むこと(引き返すこと)がかなり難しい。(このメモのように)パズルとして楽しむ目的で――あるいは研究目的で――意図的にやる場合を別にすれば、「分解可能な3次方程式にカルダノの公式を適用すること」は、百害あって一利なしといえよう。
教訓 カルダノの公式を使えば、3次方程式の解を機械的に根号表現できる。けれど「有理数解を持つ3次方程式」にカルダノの公式を適用するのは、悪手。有理数解があるかもしれないときは、必ず先に有理数解チェックを行い、因数分解可能なら分解するべし。
使い方次第でカルダノの公式は役立つけど、それは「有理数解が無い場合」の話。2次方程式として解ける問題にわざわざ3次方程式の解の公式を適用したら、変なことになってしまう。
![]()
混乱の原因は、それだけではない。ある数 a の立方根――つまり x3 = a を満たす x ――は、3次方程式 x3 − a = 0 の解であり、(x = 0 の場合を別にすれば)三つある。では a の立方根 3√a は、 x3 = a の三つの解のうち、どれを表すのか?
広い意味では、 3√a は、文脈に応じて、三つの値のどれをも表し得る。でも、そのうち一つの値(主値)を選ぶとなると「偏角」が絡んでくる。結論から言うと、正の実数の立方根は普通に正の実数でいいのだが、負の数の立方根では、
3√−8 = −2 サ
のような「実数ルール」は、必ずしも適用されない。普通は
3√−8 = 1 + √−3 シ
のように、ある種の複素数が主値とされる。ちなみに、三つある立方根のもう一つは、この場合:
3√−8 = 1 − √−3 ス
実際、サ・シ・スの右辺は、どれも3乗すると −8 になる。そのことは、サについては明白。シについては、
(√−3)3 = (√−3)2 × √−3 = (−3) × √−3 = −3√−3
に留意すると:
(1 + √−3)3 = 13 + 3⋅12⋅(√−3) + 3⋅1⋅(√−3)2 + (√−3)3
= 1 + 3√−3 + 3(−3) − 3√−3
= 1 + 3(−3) = 1 + (−9) = −8
スについても、
(1 − √−3)3 = 13 − 3⋅12⋅(√−3) + 3⋅1⋅(√−3)2 − (√−3)3
= 1 − 3√−3 + 3(−3) + 3√−3
なので、やはり = 1 + 3(−3) = −8 になる。
しばしば √−1 を i で表す。この記法を使うと √−3 は i√3 あるいは (√3)i とも表現可能。なぜなら:
√−3 = √−1 × √3 = i × √3
![]()
x, y が実数のとき x + yi は(複素)平面上の点 (x, y) に対応するので、その絶対値(原点からの距離)の平方は、ピタゴラスの定理により x2 + y2 に等しい。サ・シ・スは、それぞれ
(2, 0), (1, √3), (1, −√3)
に当たるので、「絶対値の平方」はどれも 4:
22 + 02 = 4, 12 + (±√3)2 = 1 + 3 = 4
従って「絶対値」そのものは、どれも 2。要約すると: 8 の立方根は三つあるけど、どの立方根も、その絶対値は、もともとの数 8 の絶対値(それは 8 自身である)の立方根に等しい。より一般的に:
「絶対値が a の数」の立方根の絶対値は、 a の立方根(その値を b としよう)に等しい。
言い換えると、ある数 a の三つの立方根は、どれも原点から距離 b の場所にある。
〔注〕 a の立方根自体も、もちろん三つある。しかし a にせよ b にせよ「絶対値」という数は 0 以上の実数なので、この文脈において a の立方根のどれを b とするかは明白。普通に実数の範囲で考えればいい。
でも「原点から距離 b の場所」といっても、原点を中心とする半径 b の円周上の点は、どれもその条件を満たす。どうやって、その円周上から三つの点を(ひいてはその点に対応する複素数を)選べばいいのか…
![]()
その検討に役立つのが「偏角」というコンセプト。それは、原点から見て実数 1, 2, 3, ··· がある方向を 0° として、その正反対の −1, −2, −3, ··· の方向を 180° としたもの。第1象限・第2象限にある点の方位については、反時計回りに 0° から 180° までの角度で表すことができる。第4象限・第3象限の点については、時計回りに 0° から −180° までの角度で表すことができる。それ以外の角度、例えば「270° の方位」を考えることもできるけど、それは −90° と同じ向き。偏角を統一的に表したいときは、 −180° より大きく +180° 以下の角度を使う。
このように偏角を統一的に表した上で、
偏角が θ の点(に対応する数)の立方根のデフォルト(主値)は、偏角が θ/3 の点(に対応する数)
――と約束する。これは「約束」なので「なぜ?」と聞かれても困るけど、偏角 0° の数(つまり正の実数)はデフォルトで再び実数になるので(0° の 1/3 は 0° だから)、まあ一応、常識的な選択かと。この約束の下では、負の数(偏角 180°)の立方根は、再び負の数(偏角 180°)にはならずに、デフォルトで偏角 60° になる(第1象限の右斜め上の方位)。例えば、上記シの数
1 + √−3 つまり 1 + i√3
は、この規約によって 3√−8 を代表する値となる。それは絶対値が 2 で偏角が 60° の数。残りの二つの立方根の偏角は、それ ±120° つまり偏角 180° と偏角 −60° になる(上記の例のサとス)。
実数の範囲だけで考えるときは、この約束に従わずに、「偏角 180° の数(つまり負の数)の立方根は、再び偏角 180°」とすることも、不自然ではない――それが「実数ルール」だ。けど、それを一般化して「偏角 θ の立方根は再び偏角 θ」とするわけにはいかない。というのも、偏角の性質として、ある数 z の偏角が θ のとき、 z2 の偏角は 2θ、 z3 の偏角は 3θ、等々になる。逆に言えば、偏角 θ の数 w が与えられたとき、 w = z3 を満たすような z の偏角は θ/3 と考えるのがむしろ当然で、 z と w = z3 の両方が同じ偏角 θ を持つことが可能なのは、大ざっぱに言って
θ = 3θ
が成り立つ場合に限られる。
θ = 0° なら θ = 3θ が成り立つ(w が正の実数の場合)。 θ = 180° の場合も、 3θ = 540° は 180° と同じ方位なので、事実上、同じ関係が満たされる(w が負の実数の場合)。けれど、それ以外の場合には θ と 3θ は別の方角なので「実数ルール」は文字通り実数限定の話で、一般の複素数には通用しない。拡張性の観点からは「実数ルール」では駄目なのだ。
まとめ x = 0 の場合を別にすると、ある数 x の立方根は三つある。立方根の記号 3√x が、 x の三つの立方根のうちどれを表すのか?については、多少の曖昧さがある。 x の偏角の 1∕3 の偏角を持つ数を 3√x とするのが(一応)標準的で、その場合、 x が負の数なら 3√x は偏角 60° の複素数。
![]()
研究問題 3√(√ + 2) − 3√(√ − 2) = 1 は標準ルールでも実数ルールでも成り立つが、
3√(2 + √) + 3√(2 − √) = 1
は実数ルールでないと成り立たない。もし標準ルールを使うと、この左辺の値は具体的にはどうなるか?
解 a = 3√(√ + 2), b = 3√(√ − 2) と置くと、前述のように a − b = 1, ab = 1。よって:
(a + b)2 = (a − b)2 + 4ab = 12 + 4⋅1 = 5
a, b は正の実数なので、両辺の平方根から:
a + b = √5
∴ 2a = (a + b) + (a − b) = √5 + 1
従って:
a = 3√(2 + √) = (1 + √5)/2 セ
b = a − 1 = (−1 + √5)/2
実数ルールでは、正の数 b = 3√(√ − 2) を使って、負数の立方根を負数
3√(2 − √) = −b = (1 − √5)/2 ゼ
とするので、
3√(2 + √) + 3√(2 − √) = (1 + √5)/2 + (1 − √5)/2 = 1
となるところだが、標準ルールではゼは成り立たず、ゼの右辺の偏角(現在 180°)を −120° 回転させて 60° にする必要がある。そのためには、ゼの右辺の数に、絶対値が 1 で偏角が −120° の数 (−1 − i√3)/2 を掛ければいい(1 の複素立方根の一つ)。
(1 − √5)/2 × (−1 − i√3)/2 = (−1 − i√3 + √5 + i√15)/4
すなわち:
3√(2 − √) = [−1 + √5 + i(−√3 + √15)]/4 ソ
セとソから、
3√(2 + √) + 3√(2 − √) = (2 + 2√5)/4 + [−1 + √5 + i(−√3 + √15)]/4
= [1 + 3√5 + i√3(−1 + √5)]/4 = (1/4)(1 + 3√5) + (i√3/4)(−1 + √5)
を得る。∎
付記 x = 2 + √5 は正なので、 a = 3√x は(どちらのルールでも)正。 x の立方根が事実 a であることは、次のようにして検証できる:
(1 + √5)3 = 1 + 3√5 + 3⋅5 + 5√5 = 16 + 8√5
両辺を 8 で割って:
((1 + √5)/2)3 = 2 + √5
同様に、
(1 − √5)3 = 1 − 3√5 + 3⋅5 − 5√5 = 16 − 8√5
∴ ((1 − √5)/2)3 = 2 − √5
なので、負の実数 (1 − √5)/2 は、負の実数 2 − √5 の立方根の一つ。
![]()
ある本のたまたま開いたページに、こう書いてあった†: One should know that Mathematica cannot (yet) perform miracles. For example, one can actually prove that 3√(2 + √) + 3√(2 − √) is an integer, but Mathematica tells us [...] False
それがこの「奇妙な等式」に興味を持ったきっかけなのだが、「標準ルール」では 3√(2 + √) は実数で 3√(2 − √) は非実数なので、両者の和は実数ではなく、「それが整数」という主張が False なのは当たり前。立方根が絡む denest が難しいのは事実としても、これは例題として不適切だろう。けれど、もし「実数ルール」を使うなら、和は確かに整数 1 だし、好奇心を刺激する等式には違いない。カルダノ的な文脈では、ありがちな現象ではあるけど…
† Hazrat (2015), Mathematica: A Problem-Centered Approach (2nd ed.), §6.1 “Being logical”
![]()
2026-05-13 1 × 2 × 3 × 4 とか 2 × 3 × 4 × 5 とか 連続4数の積: 1 を足すと?
連続する四つの整数を掛けて 1 を足すと、平方数になる:
(1 × 2 × 3 × 4) + 1 = 24 + 1 = 25 = 52 タ
(2 × 3 × 4 × 5) + 1 = 120 + 1 = 121 = 112 チ
(3 × 4 × 5 × 6) + 1 = 360 + 1 = 361 = 192 ツ
︙
内容は単純だけど、なかなかいい感じ。
![]()
エレガントな証明もあるのでしょうが、とりあえずベタに…。連続する四つの数(最初の数を x とする)の積を
x(x + 1)(x + 2)(x + 3) = x(x + 1)(x2 + 5x + 6)
としよう。
= x[(x + 1)(x2 + 5x + 6)] = x[(x3 + 5x2 + 6x) + (x2 + 5x + 6)]
= x[x3 + 6x2 + 11x + 6] = x4 + 6x3 + 11x2 + 6x
なので:
x(x + 1)(x + 2)(x + 3) + 1 = x4 + 6x3 + 11x2 + 6x + 1
この4次式の値を N とする。
N = x4 + 6x3 + 11x2 + 6x + 1 (✽)
N が、平方数であること(言い換えれば、その4次式が、多項式として2次式の平方に等しいこと)を示したい。4次式(✽)の分解が直ちに明らかでないとしても、4次式の係数 1, 6, 11, 6, 1 は回文的なので、定石のショートカットを使える。
定石 x4 + Px3 + Qx2 + Px + 1 のような、係数が回文(左右対称)になってる 2n 次式を扱うとき、全体を xn で割って y = x + 1∕x と置くと、 y についての n 次式に変換できる(つまり次数を半分にできる)。
N = x4 + 6x3 + 11x2 + 6x + 1 の両辺を x2 で割って:
N/x2 = x2 + 6x + 11 + 6/x + 1/x2
= (x2 + 1/x2) + (6x + 6/x) + 11 = (x2 + 1/x2) + 6(x + 1/x) + 11 ‥‥❶
定石通り、
y = x + 1/x ‥‥❷
と置くと:
y2 = x2 + 2⋅x⋅1/x + (1/x)2 = x2 + 2 + 1/x2
∴ x2 + 1/x2 = y2 − 2 ‥‥❸
❸❷を❶に代入:
N/x2 = (y2 − 2) + 6y + 11 = y2 + 6y + 9 = (y + 3)2
∴ N = (y + 3)2⋅x2 = [(y + 3)⋅x]2
= [(x + 1/x + 3)⋅x]2 = [x2 + 1 + 3x]2
つまり、連続4整数の積 N = x(x + 1)(x + 2)(x + 3) に 1 を足したものは、 x2 + 3x + 1 の平方に等しい。 x が整数なら、もちろん x2 + 3x + 1 も整数(その数を m と呼ぶことにする)。∎
〔例〕 x = 1 の場合、 N + 1 = 1⋅2⋅3⋅4 + 1 = 25。この数は、確かに m = x2 + 3x + 1 の値
12 + 3⋅1 + 1 = 5
の平方に等しい(冒頭の例・タ参照)。同様に x = 2 ないし 3 のとき、それぞれ、
m = 22 + 3⋅2 + 1 = 11
m = 32 + 3⋅3 + 1 = 19
となって、チ・ツの通り。
![]()
この問題も、前回と同じ「たまたま開いた本」の同じページで言及されていたもの。 n(n + 1)(n + 2)(n + 3) + 1 が必ず平方数になることを、そのソフトウェアでは決定できないのだという。恐らくやり方の問題だろう。ライバル・ソフトの一つ、自由ソフトウェアの PARI/GP の場合、そのまんまの質問として
issquare( n*(n+1)*(n+2)*(n+3)+1 )
とタイプすれば[その値は平方数か(Is square?)という問い合わせ]、瞬時に yes を表す 1 が返るし、実際に平方数に分解することも容易。
factor( n*(n+1)*(n+2)*(n+3)+1 )
とタイプすれば[factor はその数ないし式を分解せよ、という命令]、直ちに [n^2 + 3*n + 1 2] が返る[因子 x2 + 3x + 1 二つの積に分解される、という意味]。くだんの本では、疑問のある例が同じページに並んでいて(前回のネタと今回のネタ)、どうも釈然としない。
でも「連続4整数の積に 1 を足すと、平方数になる」という事実自体は素朴に面白いので、良しとしよう。
![]()
この問題は、要するに、回文的な4次式(✽)が、
x4 + 6x3 + 11x2 + 6x + 1 = (x2 + 3x + 1)2
と因数分解される――という話に過ぎない。定石の置換を使わずに、この事実を直に見通すこともできる。もし
x4 + Px3 + Qx2 + Px + 1 テ
が2次式の平方なら、その2次式も回文的で、明らかに2次の係数と定数項が 1 だ(もしも x2 の係数が 1 以外の数 a だったら、平方したとき a2x4 が生じてしまい、4次の係数が 1 という事実に反する)。仮にそのような2次式を
x2 + bx + 1
とすると(b は未定の係数):
(x2 + bx + 1) = (x2)2 + (bx)2 + 12 + 2(x2⋅bx + x2⋅1 + bx⋅1)
= 4x2 + 2bx3 + (b2 + 2)x2 + 2bx + 1 ト
テとトの係数を比較すると、テが2次式の平方に等しいためには、 P = 2b かつ Q = b2 + 2 であることが必要十分。すなわち、テの1次の係数(3次の係数とも等しい)である P ――その P の半分(= b)の平方に 2 を足したとき、結果が 2次の係数 Q に等しければ、このような分解が成り立つ。
x4 + 6x3 + 11x2 + 6x + 1 の場合、1次の係数の半分 b = 3 の平方 9 に 2 を足すと、まさに2次の係数 11 になるので、上記のロジックを使うなら、いきなり
x4 + 6x3 + 11x2 + 6x + 1 = (x2 + 3x + 1)2
と分解できる。
命題1 x4 + Px3 + Qx2 + Px + 1 の形の4次式は、 P の半分を b として、もし b2 + 2 = Q なら、
= (x2 + bx + 1)2
と分解される。
P, Q が整数の場合に話を限ると――。もし P が偶数なら、その半分は整数なので、この分解が可能なら結果の係数 b も整数。一方、もし P が奇数なら、その半分は分母が 2 の分数、その平方は分母が 4 の分数なので、この分解は初めから無理(その分数に 2 を足しても、整数 Q に等しくなるわけない)。
![]()
まとめると:
命題2 x(x + 1)(x + 2)(x + 3) + 1 は平方数。具体的には x2 + 3x + 1 の平方に等しい。
この結論を導いた❶以下の議論では、「x が整数」とは限定していない。つまり x が整数でも整数でなくても、同じ性質が成り立つ。 x = 1/2 の例:
1/2⋅3/2⋅5/2⋅7/2 + 1 = (1⋅3⋅5⋅7)/16 + 1
= 105/16 + 16/16 = 121/16 = (11/4)2
ふーむ、ちゃんと(有理数の)平方になる。関連する4次式の分解から、そうなって当然だが…
上記の値は 11/4 の平方に等しいわけだが、この x = 1/2 の例では、
x2 + 3x + 1 = 1/4 + 3/2 + 1 = 1/4 + 6/4 + 4/4 = 11/4
なので、命題2とつじつまが合っている。
もう少し前衛的(?)に x = √−1 つまり x = i としてみる。
i(i + 1)(i + 2)(i + 3) = i(i + 3) × (i + 1)(i + 2)
なので(注: この計算では、四つの因子を両端から二つずつ掛けると都合がいい)、
= (i2 + 3i) × (i2 + 3i + 2) = (3i − 1)(3i + 1) = (3i)2 − 12 = (−9) − 1 = −10
∴ i(i + 1)(i + 2)(i + 3) + 1 = (−10) + 1 = −9 = (3i)2
ちゃんと平方数になった! 複素数(の一種であるガウス整数)の範囲で。 x = i の場合も、
x2 + 3x + 1 = i2 + 3i + 1 = (−1) + 3i + 1 = 3i
なので、当然ながら、ちゃんと命題2の通りになっている。
![]()
連続する四つの数(1 ずつ増える)を掛け算して 1 を足すと…なんていう単純な計算も、ちょっと掘り下げると、意外と好奇心を刺激する要素を含んでいるようだ。
![]()
2026-05-15 mod 2n の特殊性 8, 16, 32, ··· には原始根が無い
n が正の整数、 p が 3 以上の素数のとき、 mod pn の全種類の数(p の倍数を除く)は、たった一つの数 ɡ と掛け算だけを使って、
ɡ, ɡ⋅ɡ, ɡ⋅ɡ⋅ɡ, ···
の形で表現される(ɡ をうまく選べば)。例えば mod 5 の全種類の数 {1, 2, 3, 4} は ɡ = 2 の累乗として生成可能:
21 = 2; 22 = 4; 23 = 8 ≡ 3; 24 = 16 ≡ 1 (mod 5)
同じ素数でも p = 2 の場合には、一般には上記のようなことができない。例えば mod 23 つまり mod 8 の全種類の数 {1, 3, 5, 7} を一つの
32 = 9 ≡ 1; 52 = 25 ≡ 1; 72 = 49 ≡ 1 (mod 8)
どれも2乗するだけで ≡ 1 になってしまう。つまり 3 の累乗からは自分自身と 1 しか生じず、 5 の累乗、 7 の累乗についても同様。
素朴な算数のような観点から見ると、「どんな奇数も、自乗されると 8 の倍数より 1 大きい数になる」。近代的な抽象代数の観点からは、「mod 5 の乗法群と mod 8 の乗法群は、どちらも四つの元から成る可換群だけど、構造が違う」。
![]()
n を 1 以上の整数として mod 2n の全種類の数(2 の倍数を除く)を考える。 n = 1 の場合の mod 2 には {1} しかなく、その 1 は自分自身によって生成される(というか、初めからそれが自分自身)。 n = 2 の場合の mod 4 には {1, 3} しかなく、両方の元は 3 によって生成される。 31 = 3; 32 = 9 ≡ 1 (mod 4)。あるいは 3 ≡ −1 なので、
mod 4 には {1, −1} しかなく、両方の元は −1 によって生成される
と言った方が、分かりやすいかもしれない。 ±1 は確かに (−1)x の形で表現可能。
〔注〕 mod 4 では 3 ≡ −1 なので、「3」と「−1」は、同じ元の別名に過ぎない。いかめしく言うと、 3 も −1 も、同じ剰余類を代表する。日常語で言うなら、 3 も −1 も「4 の倍数より 1 小さい」という同じ性質を持ち、その性質を持つ数はどれも「同じ種類」と見なされる(mod 4 というシステムでは)。
ところが最初に見たように、 n = 3 になると、「一つの元 ɡ の累乗の形で全種類の元を表す」ということが、もはやできない。 p が 3 以上の素数のときの mod pn ではいつでもそういう ɡ が存在したのに、 mod 2n では事情が異なる。
実際、 m = 2n と置くと、 n ≥ 3 のとき mod m の乗法群は m/2 個の元を持つ(mod m には本来ちょうど m 種類の元があるのだが、ここでは 2 の倍数を除外して奇数だけを考えているので、元の数が半分になる)。よって、もしも原始根があったなら、その位数は m/2 のはず(m/2 乗して初めて ≡ 1 になる)。しかるに m = 8 のケースでは、どの元も m/4 乗(つまり 2 乗)するだけで ≡ 1 になってしまうので、原始根ではない: q を任意の奇数とすると m = 8 の場合:
q が原始根であるための必要条件は qm/4 ≢ 1 (mod m)
現実には qm/4 ≡ 1 (mod m) ‥‥⓵
⓵は、
qm/4 = 1 + hm
と同じ意味(h は何らかの整数)。両辺を平方すると:
(qm/4)2 = 1 + 2hm + (hm)2 ‥‥⓶
ここで m は = 2n で n は 3 以上だから、 m2 = (2n)2 = 22n は 2m = 2n+1 の倍数であり、従って mod 2m においては、右辺・第3項は無いの同じ。右辺・第2項も 2m の倍数なので、無いのと同じ。結局、⓶は
q2m/4 ≡ 1 (mod 2m) ‥‥⓷
を含意し、⓵が成り立つなら⓷も成り立つ。要するに、 mod が m = 2n のとき原始根が無いなら、 mod が 2m = 2n+1 のときも原始根が無い(mod 2m において、もしも原始根が存在したなら、その数は 2m/2 乗〔つまり m 乗〕されて初めて ≡ 1 になるはずだが、実際には、どの数を選んでも、 2m/4 乗されたときには既に ≡ 1 になっている)。 m = 23 のときに⓵が成り立つこと、および⓵が⓷を含意することから、帰納法によって、 m = 23, 24, 25, ··· のどれを mod としても同じ結論に。
mod 2n の任意の元 q の位数は、最大でも 2n/4 = 2n−2 ということが分かった。原始根になるためには、位数がそのさらに 2 倍になる必要があるのだから、理論的に無理、と。では、せめて位数が理論上の最大値 2n−2 に等しくなることなら、あり得るか?
![]()
mod 8 では 3 も 5 も位数 2 なので答えは yes だが、 mod 16 より上ではどうか。実は 3 と 5 は任意の mod 2n において(n = 3, 4, 5, ···)、理論上可能な最大の位数を持ち続ける――p が奇数のとき mod p2 の原始根 ɡ は、任意の mod pn でもそのまま原始根となるが、それと似ている。
定理2 n を 3 以上の任意の整数として、 m = 2n と置く。 mod m において、 q = 3 の位数も q = 5 の位数も、 m/4 に等しい。
証明 位数は、乗法群の元の総数 m/2 = 2n−1 の約数なので、もし qm/8 ≢ 1 (mod m) なら q の位数は m/4 = 2n−2 になるしかない。
というのも m = 2n の約数は、明らかに 1, 2, 4, 8, ··· のみ。もしも q の位数 λ が 1, 2, 4, 8, ··· のうちの m/8 以下のどれかだとしたら、 qλ ≡ 1 なので、当然 q2λ ≡ (qλ)2 ≡ 1 になり、同様にして qλ, q2λ, q4λ, ···, qm/8 はどれも ≡ 1 でなければならない。従って、もし qm/8 ≢ 1 だとすると、 q の位数は m/8 より大きく、つまり m/4 か m/2 のどちらか。しかるに、ここで考えている mod m の世界では、理論上可能な位数の最大値は m/4 であり(前述)、 m/2 の可能性はない。
さて n = 3 のとき(m = 23 = 8, m/8 = 1)、
31 = 1 + 2 ≢ 1 (mod 8)
51 = 1 + 4 ≢ 1 (mod 8)
なので、 q = 3, q = 5 のどちらについても、定理2は正しい。
それぞれ両辺を平方すると:
32 = (1 + 2)2 = 1 + 2⋅2 + 22 = 1 + 8
52 = (1 + 4)2 = 1 + 2⋅4 + 42 ≡ 1 + 8 (mod 16)
すなわち n = 4 のときには、 q = 3 も q = 5 も
q16/8 ≡ 1 + 16/2 ≢ 1 (mod 16)
を満たし、やはり定理2は正しい。
今 n を 4 以上の任意の整数として、 m = 2n に関して
qm/8 ≡ 1 + m/2 ≢ 1 (mod m)
が成り立つと仮定すると、両辺の平方から下記のようになり、 2m = 2n+1 に関しても同様の関係が成り立つ:
q2m/8 ≡ 1 + 2(m/2) + (m/2)2 ≡ 1 + m ≢ 1 (mod 2m)
なぜなら (m/2)2 = (2n−1)2 = 22n−2 は 2m = 2n+1 の倍数なので、 mod 2m においては ≡ 0。
よって帰納法により、任意の n ≥ 4 に対して定理2は正しい。∎
要するに m = 2n が 8 以上のとき、 mod m の全種類の元の半数を 3x の形で表すことができる。あるいは 5x の形で表すことができる。
〔例〕 mod 16 において:
31 = 3; 32 = 9; 33 = 27 ≡ 11; 34 ≡ 11⋅3 = 33 ≡ 1
51 = 5; 52 = 25 ≡ 9; 53 ≡ 9⋅5 = 45 ≡ 13; 54 ≡ 13⋅5 = 65 ≡ 1
よって 1, 3, 5, 7, 9, 11, 13, 15 の八つの要素があるうち、 3x の形では 1, 3, 9, 11 の四つを表現でき、 5x の形では 1, 5, 9, 13 の四つを表現できる。けれど「そのどちらによっても、表現されない要素」もある(例えば 7)。
「半数の要素を qx の形で表現できる」という点では q = 3 も q = 5 も同等だが、後者の方が性質が単純で扱いやすい――上の例からも分かるように、 5x の形式を使うと 4k + 1 型の整数に対応する全種類の元が表現可能であり、表現可能な数たちは、最小正剰余においては等間隔で並ぶ(間隔 4)。実際 mod 4 においては 5 ≡ 1 であり、従って 5x ≡ 1x ≡ 1。
けれど、全体の半数の要素しか表現できないのでは、いかにも中途半端だし、都合が悪い。その不都合に対処するため、次のようなアイデアが使われる。
![]()
法を 2n, n ≥ 3 とする。 mod 2n の(2 の倍数以外の)合計 2n–1 個の要素のうちの半数、つまり 2n−2 個の要素については(この個数を B とする)、 5β の形で表現可能。ここで β = 1, 2, ···, B とすれば、これら B 種類の要素が過不足なく生じるのだが、 5 の位数は B であり、つまり 5B ≡ 1 (mod 2n) なので、 5B の代わりに 50 = 1 を使っても同じこと。 β = 0, 1, 2, ···, B − 1 と考えた方が便利だろう。
ともあれ、このようにして 4k + 1 型の B 種類の数が表現可能だが、 mod 2n の世界には、この他に 4k + 3 型の数も B 種類ある(2 の倍数は除外されているので、 4k 型や 4k + 2 型の数は、要素として存在しない)。それらについては −5B の形で表すことができる。実際、
50, 51, 52, ···, 5B−1
の B 個の数はどれも不合同なので、当然ながら
−50, −51, −52, ···, −5B−1
の B 個の数も、どれも不合同。しかも前者の B 個の数はどれも 4 の倍数より 1 大きいのだから、それを −1 倍した後者の B 個の数は、どれも 4 の倍数より 1 小さい。すなわち 4k − 1 型(言い換えれば 4k + 3 型)。要約すると、 β = 0, 1, 2, ···, B − 1 に対して、
5β は 4k + 1 型の B 種の数を表し、
−5β は 4k + 3 型の B 種の数を表し、
これらを合わせた計 2B 個、つまり 2 × 2n−2 = 2n−1 個の数たちは、 mod 2n の 2n−1 種の数をちょうど一つずつ代表する。
つまり n ≥ 3 のとき、 mod 2n の全種類の要素(2 の倍数を除く)は、
(−1)α⋅5β
の形で、過不足なく表現される。ここで β の範囲は上記の通り。 α については、もし 4k + 1 型の数を表現するのなら 0 に設定し――そのとき (−1)α = 1 は、実質的に + 符号を表す――、もし 4k + 3 型の数を表現するのなら 1 に設定すればいい――そのとき (−1)α = −1 は、実質的に − 符号を表す。
〔例〕 mod 16 において β = 0, 1, 2, 3 とすると:
(−1)0⋅5β = 5β ≡ 1, 5, 9, 13
(−1)1⋅5β = −5β ≡ −1, −5, −9, −13 ≡ 15, 11, 7, 3
n = 0, 1, 2 の場合、つまり mod 1, mod 2, mod 4 の場合についても、形式的に同じ (−1)α⋅5β の形で、それぞれの全種類の要素(2 の倍数を除く)を表すことができる。このうち mod 4 の要素は 1 と 3 ≡ −1 の二つなので、 β = 0 に固定して α = 0, 1 だけを考えれば十分。 mod 1 および mod 2 の要素は 1 だけなので、 α = β = 0 に固定すればいい。そうすれば、必要に応じて 2n = 1, 2, 4, 8, 16, ··· を統一的に扱える。これは「便宜上、統一的に扱える」というだけで、実質においては mod 1, mod 2, mod 4 の乗法群には原始根が有り、 −1 と 5 のような二つの生成元を必要としていない。
他方、 mod 8, mod 16, mod 32 等々の乗法群には原始根が無く、最も位数の大きい元を使っても、それ一つからは群の要素の半数しか生成できない。二つの元を組み合わせて使うことで、初めて群の全部の元が生成される。 mod p などの世界とは、ほんの少し(しかし本質的に)性質が違う。
![]()
このような理論だけを記しても、それが一体どんな場面で活躍するのか、はっきりしない。それについては次回以降にでも。(続く)
〔参考文献〕 Dirichlet–Dedekind, §130
![]()