2の100乗の階乗とか

ヒューガルデン 禁断の果実

具体的な計算はid:smoking186さんがlog_{10} (2^{100})!を推定する - 186 @ hatenablogで書かれてますが、とりあえず。


まあ、2の何乗かが何桁になるかは、プログラマのたしなみなんで、2の100乗が何桁になるかは基本として。
何ビットで何桁が扱えるかとかは、よくある問題ですよね?
2^10が1024で、だいたい10^3になるので、2^100は2^10^10≒10^3^10=10^30
ということで、2^100はだいたい30桁になります。


そのときの1の位ですが、id:odzさんが書いてる通り、2を何回も掛けていくと1の位は2・4・8・6が繰り返されます。100は4で割り切れるので、2^100の1の位は6になります。
で、2^100の1億の位ですが、2^100を階乗するときには、その途中で必ず10億を掛けるので、少なくとも1億の位までは0が続きます。


問題は、2^100の階乗が何桁になるかですが、階乗はスターリングの公式で近似してこうなります。
n!\approx\sqrt{2\pi n}\frac{n^n}{e^n}
ここで、\sqrt{2\pi}は2より大きくて3より小さいくらいなので、桁数にはほとんど影響しません。ということで、切捨て。
ということは、桁数としては
\sqrt{n}の桁数+n^nの桁数-e^nの桁数
となります。


\sqrt{10^{30}}の桁数は、15ケタですね。
(10^{30})^{(10^{30})}=10^{30\times10^{30}}のケタ数は、3\times10^{31}ケタということになります。これはでっかい数字なので、15とか足してもあんまり変わりません。
e^{(10^{30})}はeが\sqrt{10}よりも小さいことから、10^{5\times10^{29}より小さいということになります。ということで、5\times10^{29}ケタより小さいということに。
求めたいケタ数は3\times10^{31}-5\times10^{29}=(300-5)\times10^{29}ということになりますが、300から5を引くというのも、まあ誤差ってことで切り捨てちゃいます。
そうすると、最終的には、2の100乗の階乗は3\times10^{31}ケタということになります。