※ 本文轉錄自 [Math] 看板
發信人: DreamYeh.bbs@bbs.wretch.cc (天使) 看板: Math
標 題: Re: 請問100階乘是幾數
發信站: 無名小站 (Sat, 03 Dec 2005 01:19:42 +0800 (CST))
※ 引述《phpw.bbs@bbs.nsysu.edu.tw (惡 役 參 上)》之銘言:
> 請問1*2*3*......*100=100!
> 是幾位數?
> 怎麼算呢
> 謝?謝
158位數
算法有兩個
1.用程式跑
先算出100!再取log??
還要自己寫新的資料結構、定義長整數乘法運算、LOG運算
才能算出,麻煩。
簡單可證明:
log n! = Σlog k
k為1~n
運用這個公式可簡單請電腦程式幫你算出來
程式碼舉例: (BCB範例)
double a=0;
for(double k=1;k<=100;k++) a+=log10(k);
Memo1->Lines->Append(FloatToStr(a));
結果:157.970003654716 ->得答案為158位數
重點是只需要線性時間+不需太大的記憶體空間就可以幫你算出
2.用Stirling's approximation 估算
式子? ln n! = n ln(n) - n + ln(n)/2 + ln(2π)/2
ln 100! = 100*ln100-100+ln100/2+ln(2π)/2
=363.738542225008
log 100!=ln 100! / ln 10 =157.9696
啊哈!還是得到158位數!!
這次只要用小算盤算就好了
以上兩個方法,希望帶給你一些數學樂趣:)
--
有任何疑惑歡迎寫信或來無名P_DreamYeh板詢問唷~~
--
歡迎來P_DreamYeh恣嚐天使之家的溫暖唷....
—
/\●/\ ))
(( / /▲\ \
\\
2 則留言:
人家愚公移山都把答案算出來了~又不只有位數 = =||
愚公移山就好啦!
張貼留言