n進法と記数法

同義語:base-n numeration

概要

n進法と記数法(base-n numeration)とは、2 以上の整数 $n$ を底として、数を $0$ から $n-1$ までの数字と $n$ の累乗の位で書き表す方法である。正の整数は $n$ で割り続けた余りを並べることで、ただ 1 通りに $n$ 進法で書ける。$0\le x<1$ の実数は「$n$ 倍して整数部分を書き出す」ことで $n$ 進小数に展開でき、ある所から先がすべて $n-1$ になる展開を除けば展開は 1 通りである。既約分数が有限の $n$ 進小数になるのは、分母のどの素因数も $n$ を割り切るときに限る。$8=2^3$ なので 2 進法を 3 桁ずつ区切ると 8 進法になる。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: 整数の筆算の仕組み, 除法の原理, 床関数, 無限級数の和と収束判定

高校での出発点:同じ数を別の底で書く

ふだん使う数の書き方は、$10$ 個の数字 $0,1,\dots,9$ を並べ、右から順に $1$ の位、$10$ の位、$100$ の位…と読む 10 進法 である。$10$ のところを $2$ や $3$ に替えても、同じように数を書き表せる。これを $n$ 進法 という。この記事では、$n$ 進法でどんな整数も(そして $0$ 以上 $1$ 未満の実数も)ただ 1 通りに書けることを確かめ、進法を替えると何が変わり何が変わらないかを調べる。

45 を 2 進法と 3 進法で書く

$45$ を $2$ の累乗の和に分けると $45=32+8+4+1=2^5+2^3+2^2+2^0$ である。使った位に $1$、使わない位に $0$ を書いて上の位から並べると $101101$ となり、これを $45=101101_{(2)}$ と書く。
$3$ の累乗では $45=27+18=1\cdot3^3+2\cdot3^2+0\cdot3+0$ なので、$45=1200_{(3)}$ である。図 1 は、$45$ の 3 通りの書き方を位取りの表にしたものである。

45 を 10 進法・2 進法・3 進法の位取りの表で書いたもの。各マスの上がその位の重み、中がその位の数字 45 を 10 進法・2 進法・3 進法の位取りの表で書いたもの。各マスの上がその位の重み、中がその位の数字

$n$ 進法から 10 進法に直す
  1. $1011_{(2)}=1\cdot2^3+0\cdot2^2+1\cdot2+1=8+0+2+1=11$。
  2. $212_{(3)}=2\cdot3^2+1\cdot3+2=18+3+2=23$。
  3. 小数点より右も同じように読む。$0.101_{(2)}=1\cdot\dfrac12+0\cdot\dfrac14+1\cdot\dfrac18=\dfrac58$ である。
0.1 は 2 進法では終わらない

10 進法の $0.1=\dfrac1{10}$ を 2 進法の小数で書こうとすると、$\dfrac1{10}=0.000110011\cdots_{(2)}$ と、$0011$ が限りなくくり返して終わらない(ex-bnn-tenth で計算する)。10 進法では 1 桁で書ける数が、2 進法では有限の桁で書けない。

この記事で答える問いは次の 4 つである。

  1. どんな正の整数も $n$ 進法で書けるか。書き方は 1 通りか。→ thm-bnn-unique
  2. 2 進法と 8 進法・16 進法の間は、なぜ数字をまとめるだけで変換できるのか。→ prop-bnn-group
  3. $0$ 以上 $1$ 未満の実数の $n$ 進小数は、どう求め、何通りあるか。→ thm-bnn-fraction、prop-bnn-fraction-unique
  4. ex-bnn-start-tenth のように、有限の桁で書けるかどうかが進法で変わるのはなぜか。→ prop-bnn-finite
    高校の計算この記事の言葉大学の言葉
    $n$ で割り続けて余りを並べる表し方の存在と一意性(thm-bnn-unique)除法の原理 のくり返し、位取り記数法
    2 進法を 3 桁ずつ区切る底の累乗への変換(prop-bnn-group)$8=2^3$ による桁のまとめ
    $n$ 倍して整数部分を取り出す$n$ 進小数(thm-bnn-fraction)実数の $n$ 進展開、無限級数の和と収束判定
    有限小数かどうか分母の素因数と底(prop-bnn-finite)$\mathbb{Z}[1/n]$ の元かどうか
    10 進法の表し方がただ 1 通りであることは、繰り上がりの仕組みを使って 整数の筆算の仕組み で証明されている。そこでは $10$ を $B$ に替えても同じ証明が通ることも述べられている。この記事では、割り算をくり返す別の証明を与え、小数と進法の変換へ進む。

$n$ 進法の表し方

定義

$n$ 進法の表し方

$n$ を $2$ 以上の整数とする。$0$ 以上 $n-1$ 以下の整数を $n$ 進法の数字 という。正の整数 $N$ を
$$ N=d_m n^m+d_{m-1}n^{m-1}+\cdots+d_1n+d_0\qquad(d_k\ \text{は}\ n\ \text{進法の数字},\ d_m\ne0) $$
と書いたとき、これを $N$ の $n$ 進法の表し方 といい、数字を上の位から並べて $N=d_md_{m-1}\cdots d_1d_0{}_{(n)}$ と書く。$n$ を 底 という。$n^k$ を掛ける数字 $d_k$ を $n^k$ の位の数字 という。$0$ は数字 $0$ だけで $0_{(n)}$ と書く。

条件 $d_m\ne0$ は、先頭に $0$ を付けた $0101101_{(2)}$ のような書き方を除くためのものである。底が $10$ より大きいときは数字が足りないので、$16$ 進法では $10,11,\dots,15$ を $\mathrm{A},\mathrm{B},\dots,\mathrm{F}$ で表す。

小さな数の $n$ 進法
  1. $2$ 進法で $1,2,3,4,5,6,7,8$ は $1,10,11,100,101,110,111,1000$ である。$2^k$ は $1$ の後に $0$ が $k$ 個並ぶ。これは 10 進法で $10^k$ が $1$ の後に $0$ が $k$ 個並ぶのと同じである。
  2. $n$ 進法で底 $n$ 自身は $10_{(n)}$ と書ける。$n=n\cdot1+0$ だからである。したがって「$10$」という数字の並びが表す数は、底によって $2,3,\dots$ と変わる。
  3. $16$ 進法で $255=15\cdot16+15=\mathrm{FF}_{(16)}$、$256=1\cdot16^2=100_{(16)}$ である。

存在と一意性

$n$ 進法の表し方の存在と一意性

$n$ を $2$ 以上の整数とする。すべての正の整数 $N$ は $n$ 進法の表し方(def-bnn-base)をもち、その表し方はただ 1 通りである。

$n$ で割った商と余りに分ける

方針:$N$ を $n$ で割ると $N=nq+r$($0\le r< n$)となる。余り $r$ が一の位の数字、商 $q$ が「一の位を取り去った残り」になることを示し、$q< N$ なので小さい数について分かっていることを使う(数学的帰納法 の、$N$ より小さいすべての数で成り立つと仮定する形)。
段 1(商は元の数より小さい)。$N\ge1$ を $n$ で割って $N=nq+r$、$0\le r\le n-1$ とする(除法の原理)。$q\ge0$ である。$n\ge2$ なので $N=nq+r\ge2q$ であり、$q\ge1$ なら $q<2q\le N$、$q=0$ でも $q< N$ である。いずれにせよ $q< N$ である。
段 2(存在)。$N$ より小さい正の整数はすべて $n$ 進法の表し方をもつと仮定する。段 1 の $q$ が $0$ なら $N=r$ で、$1\le r\le n-1$ なので $N=r_{(n)}$ は 1 桁の表し方である。$q\ge1$ なら、仮定により $q=c_{m-1}n^{m-1}+\cdots+c_1n+c_0$($c_{m-1}\ne0$)と書ける。これを $N=nq+r$ に代入すると
$$ N=c_{m-1}n^m+\cdots+c_1n^2+c_0n+r $$
となる。各係数は $n$ 進法の数字で、最高位 $c_{m-1}$ は $0$ でないので、これは $N$ の表し方である。$N=1$ では $q=0$ となるので、仮定なしに段 2 の前半だけで済む。よって帰納法により、すべての正の整数が表し方をもつ。
段 3(一の位は決まってしまう)。$N=d_mn^m+\cdots+d_1n+d_0$ を任意の表し方とする。$Q=d_mn^{m-1}+\cdots+d_2n+d_1$ とおくと $N=nQ+d_0$ で、$0\le d_0\le n-1$ である。除法の原理 により、$N=nq+r$、$0\le r< n$ をみたす整数の組 $(q,r)$ はただ 1 つなので、$d_0=r$、$Q=q$ である。つまり、どの表し方でも一の位の数字は「$N$ を $n$ で割った余り」であり、残りの数字は商 $q$ を表している。
段 4(一意性)。$N$ より小さい正の整数では表し方が 1 通りと仮定する。$N$ の表し方が 2 つあるとすると、段 3 により一の位の数字はどちらも $r$ である。$m=0$(1 桁)なら $Q=0$、$m\ge1$ なら $Q\ge d_mn^{m-1}\ge1$ なので、$q=0$ のときはどちらの表し方も 1 桁の $r$ で一致する。$q\ge1$ のときは、どちらの表し方でも残りの数字 $d_m\cdots d_1$ は $q$ の表し方になっている(最高位の $d_m\ne0$ もそのまま)。$q< N$ なので仮定により $q$ の表し方は 1 通りで、残りの数字も一致する。帰納法により、すべての正の整数で表し方は 1 通りである。$\square$

証明の段 3 は、そのまま 表し方の求め方 になっている。$N$ を $n$ で割った余りが一の位、商をまた $n$ で割った余りが $n$ の位、…と続け、商が $0$ になったら止める。余りを下から順に並べれば $n$ 進法の表し方である。

割り算をくり返して求める
  1. $100$ を $7$ 進法で書く。$100=7\cdot14+2$、$14=7\cdot2+0$、$2=7\cdot0+2$ なので、余りを下から並べて $100=202_{(7)}$ である。検算:$2\cdot49+0\cdot7+2=100$。
  2. $2026$ を $8$ 進法で書く。$2026=8\cdot253+2$、$253=8\cdot31+5$、$31=8\cdot3+7$、$3=8\cdot0+3$ なので、$2026=3752_{(8)}$ である。検算:$3\cdot512+7\cdot64+5\cdot8+2=1536+448+40+2=2026$。
  3. $45$ を $3$ 進法で書く。$45=3\cdot15+0$、$15=3\cdot5+0$、$5=3\cdot1+2$、$1=3\cdot0+1$ なので $45=1200_{(3)}$ で、ex-bnn-start-45 と一致する。

逆に $n$ 進法から 10 進法に直すときは、上の位から「$n$ 倍して次の数字を足す」をくり返すと、掛け算の回数が少なくて済む。

上の位から $n$ 倍して足す
  1. $1011_{(2)}$:$1\to1\cdot2+0=2\to2\cdot2+1=5\to5\cdot2+1=11$。これは $1011_{(2)}=((1\cdot2+0)\cdot2+1)\cdot2+1$ とくくり直したものである(ex-bnn-start-to-decimal の 1)。
  2. $3752_{(8)}$:$3\to3\cdot8+7=31\to31\cdot8+5=253\to253\cdot8+2=2026$。途中に現れる $31,253$ は、ex-bnn-division の 2 の商と同じ数である。割り算で下の位から数字を取り出す操作と、掛け算で上の位から数字を戻す操作が、ちょうど逆になっている。

同じくくり直しは多項式の値の計算にも使える(多項式の筆算と組立除法)。$n$ 進法の表し方は「$x=n$ を代入すると $N$ になる、係数が数字の多項式」だからである。

桁数

$n$ 進法での桁数

$n$ を $2$ 以上の整数、$N$ を正の整数、$m$ を $0$ 以上の整数とする。$N$ の $n$ 進法の表し方が $m+1$ 桁であることと、$n^m\le N< n^{m+1}$ であることは同値である。

最小と最大の $m+1$ 桁の数と比べる

方針:$m+1$ 桁の数のうち最小のものと最大のものを求め、桁数ごとに数の範囲が隙間なく分かれることを使う。
段 1($m+1$ 桁なら $n^m\le N< n^{m+1}$)。$N=d_mn^m+\cdots+d_0$、$d_m\ge1$ なら、ほかの数字は $0$ 以上なので $N\ge n^m$ である。また各数字は $n-1$ 以下なので
$$ N\le(n-1)(n^m+n^{m-1}+\cdots+1)=n^{m+1}-1< n^{m+1} $$
である。等号は 等差数列と等比数列 の等比数列の和の公式による。
段 2(逆)。$n^m\le N< n^{m+1}$ とする。$N$ の表し方が $j+1$ 桁なら、段 1 により $n^j\le N< n^{j+1}$ である。もし $j>m$ なら $N\ge n^j\ge n^{m+1}$、もし $j< m$ なら $N< n^{j+1}\le n^m$ となり、どちらも仮定に反する。よって $j=m$ である。$\square$

桁数を数える
  1. $2^5=32\le45<64=2^6$ なので、$45$ は 2 進法で $6$ 桁である(ex-bnn-start-45)。
  2. $3^6=729\le1000<2187=3^7$ なので、$1000$ は 3 進法で $7$ 桁である。実際 $1000=1101001_{(3)}$ である。

$n^m\le N< n^{m+1}$ を対数で書くと $m\le\log_nN< m+1$ なので、桁数は $\lfloor\log_nN\rfloor+1$ である。10 進法の場合は 常用対数と桁数 で扱う。

進法の変換:2 進法と 8 進法・16 進法

コンピュータの世界では、2 進法の長い数字の列を 3 桁ずつ区切って 8 進法に、4 桁ずつ区切って 16 進法に直すことが多い。これが正しいのは、$8=2^3$、$16=2^4$ だからである。

底の累乗への変換

$n$ を $2$ 以上の整数、$k$ を正の整数とする。$N$ の $n$ 進法の数字を一の位から $k$ 個ずつ区切り(最後の組が $k$ 個に足りなければ上に $0$ を補う)、各組 $(e_{k-1}\cdots e_1e_0)$ を $e_{k-1}n^{k-1}+\cdots+e_1n+e_0$ という 1 つの数に置きかえる。こうして得た数を下の組から順に並べると、$N$ の $n^k$ 進法の表し方になる。

同じ和を $k$ 項ずつまとめる

方針:$n$ 進法の表し方の和を、$k$ 項ずつまとめて $n^k$ の累乗でくくり、thm-bnn-unique の一意性を $n^k$ 進法で使う。
段 1(まとめる)。上に $0$ を補って桁数を $k$ の倍数 $kL$ にし、$N=\sum_{i=0}^{kL-1}d_in^i$ とする。$i=kj+t$($0\le j\le L-1$、$0\le t\le k-1$)と書くと、$n^i=(n^k)^j\,n^t$ なので
$$ N=\sum_{j=0}^{L-1}\Bigl(\sum_{t=0}^{k-1}d_{kj+t}\,n^t\Bigr)(n^k)^j=\sum_{j=0}^{L-1}D_j\,(n^k)^j,\qquad D_j:=\sum_{t=0}^{k-1}d_{kj+t}\,n^t $$
である。$D_j$ が $j$ 番目の組を 1 つの数に置きかえたものである。
段 2($D_j$ は $n^k$ 進法の数字)。$D_j\ge0$ であり、各 $d_{kj+t}\le n-1$ なので、prop-bnn-digits の証明の段 1 と同じ計算で $D_j\le(n-1)(1+n+\cdots+n^{k-1})=n^k-1$ である。
段 3。上の $0$ の組を除けば、段 1 の式は $N$ の $n^k$ 進法の表し方である。thm-bnn-unique により、それが $N$ の $n^k$ 進法の表し方そのものである。$\square$

2 進法を区切って 8 進法・16 進法にする

$2026=11111101010_{(2)}$ である。
(1) 下から 3 桁ずつ区切ると $11\,|\,111\,|\,101\,|\,010$ で、各組は $3,7,5,2$ なので $2026=3752_{(8)}$ である。ex-bnn-division の 2 と一致する。
(2) 下から 4 桁ずつ区切ると $111\,|\,1110\,|\,1010$ で、各組は $7,14,10$ なので $2026=7\mathrm{EA}_{(16)}$ である。検算:$7\cdot256+14\cdot16+10=1792+224+10=2026$。

反例:2 進法と 3 進法の間には区切る規則がない

prop-bnn-group は、新しい底が元の底の累乗であることを使っている。$3$ は $2$ の累乗ではないので、2 進法の数字を何桁かずつ区切っても 3 進法の数字にはならない。たとえば $8=1000_{(2)}=22_{(3)}$、$9=1001_{(2)}=100_{(3)}$ で、2 進法では一の位が変わるだけなのに、3 進法ではすべての位が変わる。2 進法から 3 進法へは、いったん数そのものに戻してから 3 で割り続けるしかない。

$n$ 進小数

定義

小数点より右の位は、$n^{-1},n^{-2},\dots$ の位である。数字が限りなく続くときは、無限級数として値を決める。

$n$ 進小数

$n$ を $2$ 以上の整数とする。$n$ 進法の数字の列 $d_1,d_2,d_3,\dots$ に対し
$$ 0.d_1d_2d_3\cdots{}_{(n)}:=\sum_{k=1}^\infty\frac{d_k}{n^k}=\lim_{K\to\infty}\Bigl(\frac{d_1}{n}+\frac{d_2}{n^2}+\cdots+\frac{d_K}{n^K}\Bigr) $$
と定め、これを $n$ 進小数 という。$0\le x<1$ の実数 $x$ がこの形に書けるとき、それを $x$ の $n$ 進展開 という。ある番号から先の数字がすべて $0$ のとき 有限小数 といい、$0$ を省いて $0.d_1\cdots d_K{}_{(n)}$ と書く。

右辺の極限はいつも存在する。部分和は $K$ とともに増えるか変わらず、しかも各 $d_k\le n-1$ なので
$$ \frac{d_1}{n}+\cdots+\frac{d_K}{n^K}\le(n-1)\Bigl(\frac1n+\cdots+\frac1{n^K}\Bigr)=1-\frac1{n^K}<1 $$
と上から抑えられるからである(上に有界な増加数列は収束する。無限級数の和と収束判定)。同じ計算で、値は $0$ 以上 $1$ 以下である。

展開の求め方

$n$ 進展開の存在

$n$ を $2$ 以上の整数、$x$ を $0\le x<1$ の実数とする。$k=1,2,\dots$ について
$$ d_k:=\bigl\lfloor n^kx\bigr\rfloor-n\bigl\lfloor n^{k-1}x\bigr\rfloor $$
とおく($\lfloor y\rfloor$ は $y$ 以下の最大の整数。床関数、高校ではガウス記号 $[y]$)。このとき各 $d_k$ は $n$ 進法の数字であり、$x=0.d_1d_2d_3\cdots{}_{(n)}$ である。

部分和が $x$ を下から近似することを示す

方針:$a_k:=\lfloor n^kx\rfloor$ とおく。$d_k=a_k-na_{k-1}$ なので、部分和は「引いて足す」で打ち消し合い、$a_K/n^K$ だけが残る。これが $x$ と $1/n^K$ 未満しか違わないことを示す。$\lfloor\ \rfloor$ について使うのは、定義の不等式 $y-1<\lfloor y\rfloor\le y$ と、「整数 $m$ について $m\le y$ と $m\le\lfloor y\rfloor$ は同値」の 2 つだけである(証明は ガウス記号と整数の個数 の基本性質)。
段 1($d_k$ は $0$ 以上)。$a_{k-1}\le n^{k-1}x$ の両辺に $n$ を掛けると $na_{k-1}\le n^kx$ である。$na_{k-1}$ は整数なので $na_{k-1}\le\lfloor n^kx\rfloor=a_k$、すなわち $d_k\ge0$ である。
段 2($d_k$ は $n-1$ 以下)。$n^{k-1}x< a_{k-1}+1$ の両辺に $n$ を掛けると $n^kx< na_{k-1}+n$ である。$a_k\le n^kx$ なので $a_k< na_{k-1}+n$ で、整数どうしなので $a_k\le na_{k-1}+n-1$、すなわち $d_k\le n-1$ である。
段 3(部分和)。$0\le x<1$ なので $a_0=\lfloor x\rfloor=0$ である。$\dfrac{d_k}{n^k}=\dfrac{a_k}{n^k}-\dfrac{a_{k-1}}{n^{k-1}}$ なので
$$ \sum_{k=1}^K\frac{d_k}{n^k}=\Bigl(\frac{a_1}{n}-\frac{a_0}{1}\Bigr)+\Bigl(\frac{a_2}{n^2}-\frac{a_1}{n}\Bigr)+\cdots+\Bigl(\frac{a_K}{n^K}-\frac{a_{K-1}}{n^{K-1}}\Bigr)=\frac{a_K}{n^K} $$
である。
段 4(極限)。$n^Kx-1< a_K\le n^Kx$ を $n^K$ で割ると
$$ x-\frac1{n^K}<\sum_{k=1}^K\frac{d_k}{n^k}\le x $$
である。$K\to\infty$ で $\dfrac1{n^K}\to0$ なので、はさみうちにより部分和は $x$ に収束する。$\square$

実際の計算では、次の手順のほうが速い。$x_0:=x$ とし、$nx_{k-1}$ の整数部分を $d_k$、小数部分を $x_k$ とする($nx_{k-1}=d_k+x_k$、$0\le x_k<1$)。つまり「$n$ 倍して、整数部分を書き出し、小数部分を残す」をくり返す。$x_{k-1}=n^{k-1}x-a_{k-1}$ なので $nx_{k-1}=n^kx-na_{k-1}$ で、$na_{k-1}$ は整数だから、その整数部分は $a_k-na_{k-1}$ となり、thm-bnn-fraction の $d_k$ と同じである。

0.1 を 2 進法で書く

$x=\dfrac1{10}$ で、$2$ 倍して整数部分を取り出す。
$$ \frac1{10}\to\frac2{10}=0+\frac15,\quad\frac15\to\frac25=0+\frac25,\quad\frac25\to\frac45=0+\frac45,\quad\frac45\to\frac85=1+\frac35,\quad\frac35\to\frac65=1+\frac15 $$
ここで小数部分が $\dfrac15$ に戻ったので、この後は $0,0,1,1$ がくり返す。したがって
$$ \frac1{10}=0.0\,0011\,0011\,0011\cdots{}_{(2)} $$
である。図 2 は、区間を半分に分けて $x$ がどちらに入るかで数字を決める見方で、同じ計算を描いたものである(右半分に入れば $1$)。

1/10 の 2 進展開。区間を半分に分け、1/10 が左半分にあれば 0、右半分にあれば 1 を書く 1/10 の 2 進展開。区間を半分に分け、1/10 が左半分にあれば 0、右半分にあれば 1 を書く

$\frac{3}{8}$ を 3 進法で書く

$x=\dfrac38$ で、$3$ 倍して整数部分を取り出す。$\dfrac38\to\dfrac98=1+\dfrac18$、$\dfrac18\to\dfrac38=0+\dfrac38$ で、小数部分が $\dfrac38$ に戻ったので $\dfrac38=0.101010\cdots{}_{(3)}$ である。検算:無限等比級数の和で $\dfrac13+\dfrac1{27}+\dfrac1{243}+\cdots=\dfrac{1/3}{1-1/9}=\dfrac38$。
一方 2 進法では $\dfrac38\to\dfrac34=0+\dfrac34$、$\dfrac34\to\dfrac32=1+\dfrac12$、$\dfrac12\to1=1+0$ で小数部分が $0$ になるので、$\dfrac38=0.011_{(2)}$ と有限小数である。

小数部分がくり返すと数字もくり返す、という ex-bnn-tenth の議論を一般の分数について行い、循環の長さを調べるのが 循環小数と分数 である。そこでは 10 進法で書いたが、$10$ を $n$ に替えてもそのまま通る。

展開はいつ 1 通りか

10 進法で $0.999\cdots=1$ となるように、$n$ 進小数にも 2 通りの書き方をもつ数がある。

反例:2 通りの $n$ 進展開
  1. 2 進法で $0.0111\cdots{}_{(2)}=\dfrac14+\dfrac18+\cdots=\dfrac{1/4}{1-1/2}=\dfrac12=0.1_{(2)}$ である。
  2. 3 進法で $0.0222\cdots{}_{(3)}=\dfrac29+\dfrac2{27}+\cdots=\dfrac{2/9}{1-1/3}=\dfrac13=0.1_{(3)}$ である。
    どちらも、ある番号から先の数字がすべて $n-1$ の展開と、有限小数の展開が同じ数を表している。thm-bnn-fraction の方法で求めると、$\dfrac12$ は $0.1_{(2)}$、$\dfrac13$ は $0.1_{(3)}$ になり、$n-1$ が続く方は出てこない。
$n$ 進展開の一意性

$n$ を $2$ 以上の整数、$0\le x<1$ とする。

  1. thm-bnn-fraction で求めた数字の列では、$n-1$ でない数字が限りなく現れる(ある番号から先がすべて $n-1$ になることはない)。
  2. $x=0.e_1e_2e_3\cdots{}_{(n)}$ で、$n-1$ でない数字 $e_k$ が限りなく現れるなら、すべての $k$ で $e_k=d_k$ である。
    したがって、ある番号から先がすべて $n-1$ になる展開を除けば、$n$ 進展開はただ 1 通りである。
残りの部分が 1 未満かどうかを見る

方針:展開の「$K$ 桁目より先の部分」を $n^K$ 倍したもの(残りの部分)を考える。残りの部分は最大でも $1$ で、$1$ になるのは先の数字がすべて $n-1$ のときに限る。これを使って、数字が「$n$ 倍した数の整数部分」として決まってしまうことを示す。
段 1(残りの部分の大きさ)。数字の列 $c_1,c_2,\dots$ について $t:=\sum_{j=1}^\infty\dfrac{c_j}{n^j}$ とおくと、def-bnn-fraction の直後の計算により $0\le t\le1$ である。さらに、ある $c_i$ が $n-1$ でなければ $c_i\le n-2$ なので、その項だけ上からの評価が $\dfrac1{n^i}$ 小さくなり、$t\le1-\dfrac1{n^i}<1$ である。逆に、すべての $c_j$ が $n-1$ なら $t=\sum_j\dfrac{n-1}{n^j}=1$ である。
段 2(1 の証明)。prf-bnn-fraction の段 3・4 から、$x-\sum_{k=1}^K\dfrac{d_k}{n^k}=x-\dfrac{a_K}{n^K}$ である。これを $n^K$ 倍した $n^Kx-a_K$ は、定義により $0$ 以上 $1$ 未満である。一方、左辺は $\sum_{k>K}\dfrac{d_k}{n^k}$ なので、$n^K$ 倍すると $\sum_{j\ge1}\dfrac{d_{K+j}}{n^j}$ になる。もし $K$ より先の数字がすべて $n-1$ なら、段 1 によりこれは $1$ に等しく、「$1$ 未満」に反する。よって、どの $K$ についても $K$ より先に $n-1$ でない数字がある。
段 3(2 の証明)。$t_K:=\sum_{j\ge1}\dfrac{e_{K+j}}{n^j}$ とおくと、$e$ の列は $K$ より先にも $n-1$ でない数字を含むので、段 1 により $0\le t_K<1$ である。$x=\sum_{k=1}^K\dfrac{e_k}{n^k}+\dfrac{t_K}{n^K}$ を $n^K$ 倍すると
$$ n^Kx=\bigl(e_1n^{K-1}+e_2n^{K-2}+\cdots+e_K\bigr)+t_K $$
で、括弧の中は整数、$t_K$ は $0$ 以上 $1$ 未満なので、括弧の中は $\lfloor n^Kx\rfloor=a_K$ に等しい。$K-1$ についても同じで、$a_{K-1}=e_1n^{K-2}+\cdots+e_{K-1}$ である。$n$ 倍して引くと $a_K-na_{K-1}=e_K$ となり、$e_K=d_K$ である。これがすべての $K\ge1$ で成り立つ。$\square$

有限小数になるのはいつか

ex-bnn-three-eighths では、$\dfrac38$ が 3 進法では循環し、2 進法では有限小数になった。どちらになるかは、分母の素因数と底の素因数で決まる。

有限の $n$ 進小数で書ける分数

$n$ を $2$ 以上の整数、$x=\dfrac ab$ を $0\le x<1$ の既約分数($a\ge0$、$b\ge1$、$a$ と $b$ は 互いに素)とする。$x$ が有限の $n$ 進小数で書けるための必要十分条件は、$b$ のどの素因数も $n$ を割り切ることである($b=1$ のときは素因数がないので条件はみたされ、$x=0$ である)。

$K$ 桁で止まることを $n^K$ 倍が整数になることに言いかえる

方針:「$K$ 桁以内の有限小数で書ける」を「$n^Kx$ が整数」に、さらに「$b$ が $n^K$ を割り切る」に言いかえ、最後に素因数で判定する。
段 1(有限小数 $\iff$ ある $K$ で $n^Kx$ が整数)。$x=0.d_1\cdots d_K{}_{(n)}$ なら $n^Kx=d_1n^{K-1}+\cdots+d_K$ は整数である。逆に $n^Kx=M$ が整数なら、$0\le M< n^K$ なので、thm-bnn-unique により $M$ を $n$ 進法で書き、上に $0$ を補って $K$ 桁 $M=c_{K-1}\cdots c_0{}_{(n)}$ にできる。すると $x=M/n^K=0.c_{K-1}\cdots c_0{}_{(n)}$ である($M=0$ なら $x=0$)。
段 2($n^Kx$ が整数 $\iff$ $b\mid n^K$)。$n^Kx=\dfrac{an^K}b$ なので、これが整数であることは $b\mid an^K$ と同値である。$a$ と $b$ は互いに素なので、$b\mid an^K$ は $b\mid n^K$ と同値である(互いに素な数についての割り算の性質。整数の割り算と互除法)。
段 3(必要)。ある $K$ で $b\mid n^K$ とし、$p$ を $b$ の素因数とする。$p\mid n^K=n\cdot n\cdots n$ で、素数が積を割り切るなら因数のどれかを割り切る(素因数分解の一意性 の Euclid の補題)ので、$p\mid n$ である。
段 4(十分)。$b=p_1^{e_1}\cdots p_s^{e_s}$ と素因数分解し、どの $p_i$ も $n$ を割り切るとする。$K:=\max(e_1,\dots,e_s)$ とおくと、$p_i\mid n$ から $p_i^{e_i}\mid n^{e_i}\mid n^K$ である。$p_1^{e_1},\dots,p_s^{e_s}$ はどの 2 つも互いに素なので、その積 $b$ も $n^K$ を割り切る(整数の割り算と互除法)。段 1・2 により $x$ は $K$ 桁以内の有限小数である。$\square$

有限か循環か
  1. $\dfrac1{10}$:分母 $10=2\cdot5$ の素因数 $5$ は $2$ を割り切らないので、2 進法では有限小数にならない(ex-bnn-tenth)。10 進法では $0.1$ と有限である。
  2. $\dfrac38$:分母 $8=2^3$ の素因数 $2$ は $2$ を割り切るが $3$ を割り切らないので、2 進法では有限($0.011_{(2)}$)、3 進法では有限にならない(ex-bnn-three-eighths)。
  3. $\dfrac1{12}$:分母 $12=2^2\cdot3$ の素因数 $2,3$ はどちらも $6$ を割り切るので、6 進法では有限小数である。実際 $6^2=36$ で $\dfrac1{12}=\dfrac3{36}=0.03_{(6)}$ である。10 進法では $3\nmid10$ なので $\dfrac1{12}=0.08333\cdots$ と有限にならない。
コンピュータで 0.1 を足すと

多くのコンピュータは実数を 2 進法の有限小数(決まった桁数)で近似して記憶する。ex-bnn-finite の 1 により $0.1$ は 2 進法の有限小数では正確に表せないので、少しずれた値が記憶される。そのため、$0.1+0.2$ を計算して $0.3$ と比べると「等しくない」と判定されることがある。$0.5=0.1_{(2)}$ や $0.375=0.011_{(2)}$ のように、分母が $2$ の累乗の分数ならこのずれは起こらない。

3 進法と Cantor 集合

$[0,1]$ から真ん中の 3 分の 1 の開区間 $\left(\dfrac13,\dfrac23\right)$ を取り除き、残った 2 つの区間からまたそれぞれ真ん中の 3 分の 1 を取り除く、という操作を限りなく続ける。最後まで残る点の集まりを Cantor 集合 という(Cantor集合)。3 進法で見ると、この操作は数字の条件になる(図 3)。
真ん中の 3 分の 1 を取り除く操作。1 回目に残る区間は 3 進小数の第 1 位が 0 か 2 の数、2 回目に残る区間は第 2 位までが 0 か 2 の数にあたる 真ん中の 3 分の 1 を取り除く操作。1 回目に残る区間は 3 進小数の第 1 位が 0 か 2 の数、2 回目に残る区間は第 2 位までが 0 か 2 の数にあたる

残る点は 0 と 2 だけで書ける数

1 回目に残る $\left[0,\dfrac13\right]$ と $\left[\dfrac23,1\right]$ は、3 進小数の第 1 位を $0$ か $2$ にとれる数である。取り除いた $\left(\dfrac13,\dfrac23\right)$ の数は、第 1 位がどうしても $1$ になる。端の $\dfrac13$ は $0.1_{(3)}$ だが、ex-bnn-counter-two の 2 により $0.0222\cdots{}_{(3)}$ とも書けるので、残る側に入る。同じことを各段で考えると、Cantor 集合は「数字 $0$ と $2$ だけを使う 3 進小数 $0.d_1d_2d_3\cdots{}_{(3)}=\sum_{k=1}^\infty\dfrac{d_k}{3^k}$($d_k\in\{0,2\}$)として書ける数」全体である。def-bnn-fraction の 3 進小数は数字の列を 1 つ決めれば値が定まるので、この言い方は $0$ 以上 $1$ 未満の数に限った「3 進展開」と違い、$1=0.222\cdots{}_{(3)}$ も含む($1$ は Cantor 集合に入る)。この特徴づけの証明は Cantor集合 の記事の定理「3進表示による特徴づけ」にある(本記事では証明しない)。
たとえば $\dfrac14=0.020202\cdots{}_{(3)}$ である($\dfrac14\to\dfrac34=0+\dfrac34$、$\dfrac34\to\dfrac94=2+\dfrac14$)。数字が $0$ と $2$ だけなので $\dfrac14$ は Cantor 集合に入るが、どの段でも区間の端にはならない。$k$ 回目に残る区間は $2^k$ 個で、長さの合計は $\left(\dfrac23\right)^k$ なので、長さの合計は $0$ に近づく。それでも残る点は限りなく多い。

同じ「3 進法で数字を 2 種類に制限する」考え方を整数で使うのが、後の節「数学オリンピックの問題から」で扱う問題である。

例と反例

def-bnn-base と thm-bnn-unique の条件を 1 つずつ外すと、次のように崩れる。

外した条件崩れる主張ボックス
底 $n\ge2$表し方の存在ex-bnn-counter-base-one
数字は $n-1$ 以下表し方の一意性ex-bnn-counter-digit
最高位の数字は $0$ でない表し方の一意性(桁数)ex-bnn-counter-digit
新しい底が元の底の累乗数字を区切るだけの変換ex-bnn-counter-group
$n-1$ が続く展開を除く$n$ 進展開の一意性ex-bnn-counter-two
分母の素因数が底を割り切る有限小数で書けることex-bnn-finite
反例:底が 1 だと表せない

$n=1$ とすると、数字は $0$ 以上 $n-1=0$ 以下、つまり $0$ だけになる。$0$ だけを並べた和は $0$ なので、正の整数は 1 つも表せない。prf-bnn-unique の段 1 で $n\ge2$ から $q< N$ を出したところも、$n=1$ では $q=N$ となって崩れる。

反例:数字の上限や先頭の 0 を外すと 1 通りでなくなる
  1. 2 進法で数字 $2$ も許すと、$2=2_{(2)}$ とも $2=10_{(2)}$ とも書ける。$4=20_{(2)}=12_{(2)}=100_{(2)}$ と 3 通りにもなる($1\cdot2+2=4$)。一の位が「$n$ で割った余り」に決まる、という prf-bnn-unique の段 3 は、数字が $n-1$ 以下であることを使っていた。
  2. 先頭に $0$ を付けることを許すと、$5=101_{(2)}=0101_{(2)}$ となり、桁数が決まらない。prop-bnn-digits の段 1 は、最高位が $1$ 以上であることを使っていた。

数学オリンピックの問題から

1983 年第 5 問:3 進法で 0 と 1 だけを使う

国際数学オリンピック(1983 年)第 5 問

$10^5$ 以下の相異なる正の整数を $1983$ 個選んで、どの $3$ 個も等差数列の連続する $3$ 項にならないようにできるか。理由をつけて答えよ。
出典:国際数学オリンピック(1983 年)第 5 問 Oly83。筆者による和訳。答は「できる」である。

$3$ 個の数 $x< y< z$ が等差数列の連続する 3 項になるのは、$y-x=z-y$、すなわち $x+z=2y$ のときである。

高校数学で解く

方針:3 進法で数字 $0$ と $1$ だけを使って書ける $0$ 以上の整数の集合を $T$ とする。$T$ の数どうしの足し算では繰り上がりが起こらないことを使って、$T$ に $x+z=2y$ となる相異なる 3 数がないことを示す。そのうえで $T$ の小さい方から $1983$ 個をとり、全体に $1$ を足す。
段 1($T$ から $1983$ 個選べる)。$0\le i\le1982$ の整数 $i$ を 2 進法で書き、その数字の並びを 3 進法として読んだ数を $f(i)$ とする。たとえば $i=5=101_{(2)}$ なら $f(5)=101_{(3)}=10$ である。$f(i)$ は $T$ に入る。$i\ne j$ なら 2 進法の数字の並びが違い(thm-bnn-unique)、3 進法として読んだ数も違う(thm-bnn-unique の一意性を 3 進法で使う)ので、$f(0),f(1),\dots,f(1982)$ は $1983$ 個の相異なる数である。
段 2(大きさ)。$1982<2048=2^{11}$ なので、$i\le1982$ は 2 進法で $11$ 桁以下である(prop-bnn-digits)。よって $f(i)$ は 3 進法で $11$ 桁以下の、数字が $0$ か $1$ の数であり
$$ f(i)\le11111111111_{(3)}=1+3+\cdots+3^{10}=\frac{3^{11}-1}2=88573 $$
である。$f(i)+1\le88574\le10^5$ である。
段 3($T$ の中で $x+z=2y$ なら $x=z$)。$x,y,z\in T$ が $x+z=2y$ をみたすとし、3 進法で $x=\sum x_k3^k$、$y=\sum y_k3^k$、$z=\sum z_k3^k$($x_k,y_k,z_k\in\{0,1\}$。上の位は $0$ で補って桁をそろえる)と書く。すると
$$ x+z=\sum_k(x_k+z_k)3^k,\qquad 2y=\sum_k2y_k3^k $$
で、$x_k+z_k$ も $2y_k$ も $0,1,2$ のどれかなので、どちらの右辺も 3 進法の表し方になっている(繰り上がりが起こらない)。$x+z=2y$ なので、thm-bnn-unique の一意性により、すべての $k$ で $x_k+z_k=2y_k$ である。右辺は $0$ か $2$ なので、$x_k+z_k$ は $0$($x_k=z_k=0$)か $2$($x_k=z_k=1$)で、どちらでも $x_k=z_k$ である。よって $x=z$ である。
段 4(答え)。$A:=\{f(i)+1\mid0\le i\le1982\}$ とする。段 1・2 により、$A$ は $10^5$ 以下の相異なる正の整数 $1983$ 個からなる。$A$ の 3 数 $x+1< y+1< z+1$ が等差数列の連続 3 項なら、$(x+1)+(z+1)=2(y+1)$ から $x+z=2y$ で、段 3 により $x=z$ となり、$x< z$ に反する。よって $A$ のどの 3 個も等差数列の連続 3 項にならない。$\square$

小さい範囲で確かめる

$T$ の数で $27=3^3$ 未満のものは、3 進法で 3 桁以下の数字が $0,1$ の数
$$ 0,\ 1,\ 3=10_{(3)},\ 4=11_{(3)},\ 9=100_{(3)},\ 10=101_{(3)},\ 12=110_{(3)},\ 13=111_{(3)} $$
の $2^3=8$ 個である。たとえば $1,4$ の次に差 $3$ で続く $7=21_{(3)}$ は数字 $2$ を含むので $T$ に入らない。$0,4$ の中間の $2$、$1,9$ の中間の $5=12_{(3)}$、$3,13$ の中間の $8=22_{(3)}$ も入らない。$x< z$ の $\binom82=28$ 組すべてについて、$x+z$ が偶数でも $\dfrac{x+z}2$ は $T$ に入らないことが確かめられる。

大学数学で見ると

段 3 の核心は、3 進法で数字が $0,1$ の数を 2 つ足しても繰り上がりが起こらないので、足し算が「各位ごとの足し算」になることである。$2$ 倍した $2T$ は、3 進法で数字が $0$ と $2$ だけの整数の集合であり、$3^k$ 未満のものを $3^k$ で割ると、Cantor 集合を作る操作の $k$ 回目に残る区間の左端(rem-bnn-cantor)とちょうど一致する。等差数列を避ける集合と、真ん中の 3 分の 1 を取り除く操作は、同じ構造をしている。
$T$ のうち $3^k$ 未満のものは $2^k$ 個なので、$0$ から $3^k-1$ までの $3^k$ 個の整数に占める割合は $\left(\dfrac23\right)^k$ で、$k$ が大きいと $0$ に近づく。3 項の等差数列を含まない集合がどこまで大きくとれるかは、大学の組合せ論(加法的組合せ論)の中心的な問題の 1 つである(本記事ではこれ以上扱わない)。また、$0$ から小さい順に「それまでに選んだ数と 3 項の等差数列を作らない数」を選んでいくと $0,1,3,4,9,10,12,13,\dots$ となり、少なくとも ex-bnn-oly83-check の範囲では $T$ と一致する。

さらに先へ

  • $n$ 進法は、底を素数 $p$ にとると、整数を $p$ で何回割り切れるかを数字で読む道具になる。$n!$ に素因数 $p$ がいくつ含まれるかは、$n$ の $p$ 進法の数字の和で表せる(階乗に含まれる素因数の個数)。
  • 各位の数字の和で $3$ や $9$ の倍数を判定できるのは、$10\equiv1\pmod9$ だからである。$n$ 進法では $n-1$ の約数が数字の和で判定できる(倍数の判定法)。
  • 小数点より左に限りなく数字が続く $\cdots d_2d_1d_0{}_{(p)}$ を、ある意味で収束する数として扱うのが p進数 である。そこでは $\cdots1111_{(2)}$ が $-1$ を表す。
  • 2 進法の表し方が 1 通りであることは、母関数の等式 $(1+x)(1+x^2)(1+x^4)\cdots=\dfrac1{1-x}$ としても表せる(分割の母関数)。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する