他のメモへのリンク集。リンク集を飛ばして、このページの前書きへ。本文の目次へ。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 であり、 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 は mod p の原始根と呼ばれる。
3 は mod 7 の原始根。さらに 10 ≡ 3 (mod 7) なので――つまり 10 と 3 は mod 7 の観点では「同じ」なので―― 10 も mod 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 を借りてきて引き算。真ん中も桁も 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進法」で表記すると、
0.δδδ···
の形の(循環周期 1 の)循環小数になる。ここで δ は10進数の 104 に等しい値を表す一つの桁。この循環小数を有理数に変換すると、確かにちょうど 1/7 に等しい。実際、最初の検算を部分的に再利用して、
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 は mod 7 の原始根ってことと一応関連している。 1/7 の循環小数が複雑、という事実と、本質的には同じ現象が起きている。(続く)
![]()