2005年11月29日 星期二

[轉錄]100 階乘是幾數 --偷吃步

※ 本文轉錄自 [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 則留言:

Llama 提到...

人家愚公移山都把答案算出來了~又不只有位數 = =||

etra 提到...

愚公移山就好啦!