きっかけ
対数の問題で、\(2^{100}\) が何桁かを求めました。 常用対数を使うと桁数が出ることは分かったのですが、計算している途中で \(2^n\) の先頭の数字も対数から分かるのではないかと思いました。 \(2^n\) を小さい順に書くと、先頭はとなります。\(2,4,8\) の繰り返しではなく、\(7\) や \(9\) はなかなか出てきません。 どの数字も同じくらい出るのか気になったので調べました。
小数部分を見ればよい
\(\alpha =\log _{10}2\) とおきます。\(n\alpha \) の整数部分を \(m\)、小数部分を \(r\) とすると、と書けます。両辺を \(10\) の指数にすると
です。 \(1\leq 10^r<10\) なので、\(10^r\) の整数部分が \(2^n\) の先頭の数字になります。 整数部分の \(m\) は桁数を決め、小数部分の \(r\) は先頭の数字を決めていました。 たとえば \(n=10\) なら
です。小数部分だけを使うと
となるので、\(2^{10}\) の先頭は \(1\) です。実際に \(2^{10}=1024\) です。
先頭がそれぞれの数字になる範囲
先頭が \(d\) になるのは、のときです。常用対数を取ると
となります。 この区間の長さは
です。数字ごとに計算すると次のようになりました。
| 先頭の数字 \(d\) | \(r\) の範囲 | 区間の長さ |
| 1 | \(0\leq r<\log _{10}2\) | \(0.3010\cdots \) |
| 2 | \(\log _{10}2\leq r<\log _{10}3\) | \(0.1761\cdots \) |
| 3 | \(\log _{10}3\leq r<\log _{10}4\) | \(0.1249\cdots \) |
| 4 | \(\log _{10}4\leq r<\log _{10}5\) | \(0.0969\cdots \) |
| 5 | \(\log _{10}5\leq r<\log _{10}6\) | \(0.0792\cdots \) |
| 6 | \(\log _{10}6\leq r<\log _{10}7\) | \(0.0669\cdots \) |
| 7 | \(\log _{10}7\leq r<\log _{10}8\) | \(0.0580\cdots \) |
| 8 | \(\log _{10}8\leq r<\log _{10}9\) | \(0.0512\cdots \) |
| 9 | \(\log _{10}9\leq r<1\) | \(0.0458\cdots \) |
先頭が \(1\) になる範囲は全体の約 \(30\%\) もありますが、\(9\) の範囲は約 \(4.6\%\) しかありません。 最初に \(7\) や \(9\) がなかなか出ないと思ったのは、偶然ではなさそうです。
実際に数えてみる
\(\log _{10}2=0.301029995\cdots \) を表計算に入れて、 \(n\log _{10}2\) の小数部分から \(n=1\) から \(100\) までの先頭を数えました。
| 先頭の数字 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 回数 | 30 | 17 | 13 | 10 | 7 | 7 | 6 | 5 | 5 |
前の表の区間の長さを \(100\) 倍した数とかなり近くなりました。 そこで「\(n\log _{10}2\) の小数部分は、\(0\) から \(1\) の間にだいたい均等に散らばるのではないか」 と考えました。 まず、同じ小数部分が周期的に繰り返すことはありません。 もし \(\log _{10}2\) が有理数で、\(\log _{10}2=p/q\) と書けたとすると
となります。しかし左辺には素因数 \(5\) があり、右辺にはないので、これは成り立ちません。 したがって \(\log _{10}2\) は無理数です。 ただ、無理数だから同じ場所に戻らないことと、均等に散らばることは別の話です。 ここから先を調べると、無理数 \(\alpha \) に対する \(n\alpha \) の小数部分が均等に分布するという 定理があることを知りました。証明にはフーリエ解析を使う方法などが出てきて、そこまでは追えていません。 この定理を使えば、先頭が \(d\) になる割合は
に近づくことになります。