裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

2 のべき乗の先頭桁

2011年03月02日 | ブログラミング

2のべき乗数,2^0, 2^1, 2^2, 2^3, ... の先頭桁を考える。

一見,1, 2, 4, 8, 1, 3, 6, 1, 2, 5, 1, 2, 4, ... と長さ10の周期で循環しそうに見えるがそれは違う。

先頭桁に,7,9 は出てこないように思うとそれは違う。

以下のプログラムで出力される行方向優先の行列が,先頭桁が何であるかを示している。

library(gmp)
func <- function(x)
{
    return(as.integer(unlist(strsplit(as.character(x), ""))[1]))
}
x <- as.bigz(1)
n <- 140
f <- integer(n)
for (i in 1:n) {
    x <- x*2
    f[i] <- func(x)
}
matrix(f, ncol=10, byrow=TRUE)

結果

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    2    4    8    1    3    6    1    2    5     1
 [2,]    2    4    8    1    3    6    1    2    5     1
 [3,]    2    4    8    1    3    6    1    2    5     1
 [4,]    2    4    8    1    3    6    1    2    5     1
 [5,]    2    4    8    1    3    7    1    2    5     1
 [6,]    2    4    9    1    3    7    1    2    5     1
 [7,]    2    4    9    1    3    7    1    2    5     1
 [8,]    2    4    9    1    3    7    1    3    6     1
 [9,]    2    4    9    1    3    7    1    3    6     1
[10,]    2    4    9    1    3    7    1    3    6     1

最初に先頭桁が 7 になるのは 2^46,9 になるのは 2^53 である

> as.bigz(2)^45
[1] "35184372088832"
> as.bigz(2)^46
[1] "70368744177664"

> as.bigz(2)^52
[1] "4503599627370496"
> as.bigz(2)^53
[1] "9007199254740992"

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 不適切なグラフ in ggplot2 ... | トップ | ヒストグラムも汚い »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事