« 「2のn乗の数」の先頭の数字列:無限の恐ろしさ。:その3・プログラム完成・実行結果 | トップページ | ヒメリュウキンカ »

2016年2月25日 (木)

「2のn乗の数」の先頭の数字列:無限の恐ろしさ。:その4・一般化への拡張

★確認ですが。
前の記事で「何桁の数でも登場する」というのを根上さんのガイドに従って実行しました。
これは「有限の長さの数の並びは必ず登場する」という意味だと思います。
私には「無限」を扱う能力はありませんので、無限長の数の並びが登場するとかしないとか、そういう議論はできません。

★さて、今回根上さんの本を再読して、読み落としていた「恐るべき事実」を知りました。引用します。

 ここで重要だったことはlog2が無理数だったという事実で、”2”であることが本質的に効いているわけではありません。そこが見極められれば、2に限らず、10のべき乗でない自然数を何回も掛けていくと、その先頭の部分にどんな数列でも現れることが理解できるはずです。

わあ、そうなんだ、そういえばそうだよなあ。
プログラムをちょっと書きかえて。
インタープリタの手軽さで、どういう数のべき乗をとるかは実行時に書き込むことにしました。
先頭に現れてほしい数字列には入力要求を出します。
------------------------------

! aを最高位とする M^n を求める
!1000桁モード、超越関数(17桁)使用で実行のこと

LET M = 3

INPUT PROMPT "a = ":a
LET LM = LOG10(M)
LET L = FP(LOG10(a))
LET R = FP(LOG10(a+1))
IF R = 0 THEN
   LET R = 1
END IF

LET n = 1
DO
   LET w = FP(n * LM)
   IF(L <= w) AND (w < R) THEN
      EXIT DO
   END IF
   LET n = n + 1
LOOP
LET tmp = n * LM
PRINT M;" ^";n;"=";10^FP(tmp);"* 10 ^";IP(tmp)

END

------------------------------
実行例
M=3
a = 125
3  ^ 105 = 1.25236737537863 * 10 ^ 50

a = 3141592
3  ^ 1526548 = 3.1415920626321 * 10 ^ 728348

a = 14142
3  ^ 129393 = 1.4142036089535 * 10 ^ 61736

M=13
a = 125
13  ^ 466 = 1.25199379071007 * 10 ^ 519

a = 3141592
13  ^ 3646483 = 3.14159285111455 * 10 ^ 4061975

a = 14142
13  ^ 1897 = 1.41429278581109 * 10 ^ 2113

数学っておそろしいなあ。

★お土産
↓2の100乗までの一覧です。
役に立ちませんし、おいしくもないですけど、よろしかったらおひとつどうぞ。
「PowerOf2.txt」をダウンロード
{マウスを左クリックすると読めます。ダウンロードは右クリックから。}

« 「2のn乗の数」の先頭の数字列:無限の恐ろしさ。:その3・プログラム完成・実行結果 | トップページ | ヒメリュウキンカ »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 「2のn乗の数」の先頭の数字列:無限の恐ろしさ。:その3・プログラム完成・実行結果 | トップページ | ヒメリュウキンカ »

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ