nの階乗の桁数の求め方を教えてくださいm(__)m アバウトでいいので。 中学生でもざっくりわかるくらいに
桁数問題では常用対数をとるのが定石。
つまり、log(n!)を考える。
この計算では、スターリング公式を用いて近似計算できる。
スターリングの近似によると
証明は難しいので結果だけ書きます。
スターリングの近似により
n! ≒ √(2nπ)(n/e)^n
log(n!) ≒ log(√(2nπ)(n/e)^n)
= log(√(2nπ)) + log((n/e)^n)
= (1/2)log(2nπ) + nlog(n/e)
= (1/2)log(2nπ) + nlog(n) – nlog(e)
= (1/2)log(2π) + (1/2)log(n) + nlog(n) – nlog(e)
= (1/2)log(2π) + (1/2 + n)log(n) – nlog(e)
= (1/2 + n)log(n) – nlog(e) + (1/2)log(2π)
log(e) ≒ 0.4343
(1/2)log(2π) ≒ 0.3991
なので
≒ (1/2 + n)log(n) – 0.4343n + 0.3991
この式を計算した後、小数点以下を切り捨てて1を足すと、n!の桁数になります。
このlogは常用対数です。
常用対数 log(n) は、10を何乗したらnになるか?という問題の答えです。
たとえば、10の2乗=100なので、log(100)=2となります。
実際に計算してみると
100!の桁数は
(1/2 + 100)log(100) – 0.4343×100 + 0.3991
= 100.5×2 – 43.43 + 0.3991
= 157.9691
なので、切り捨てて1を足すと158桁
1000!の桁数は
(1/2 + 1000)log(1000) – 0.4343×1000 + 0.3991
= 1000.5×3 – 434.3 + 0.3991
= 2567.5991
なので、切り捨てて1を足すと2568桁
のように計算できます。