作者papapenguin (葡萄柚你這頑固的東西~)
看板Fortran
標題[問題] N!怎麼算
時間Tue Feb 10 16:31:46 2009
請問 n!怎麼計算。
當n很大時,程式該怎麼寫,數值才不會太大變成NaN的狀況?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.194.131.21
1F:推 kanx:用Stirling 公式去近似就好了 02/10 18:11
2F:推 latinboy: 用double浮點數可以支援大一點 再上去就要用陣列做大數 02/10 19:47
3F:→ papapenguin:感謝各位提供的方法,目前試了stirling跟double的方式 02/10 21:36
4F:→ papapenguin:均無法做出400!。其實想算的是combin-->n!/m!(n-m)! 02/10 21:38
5F:推 jsb:那就求 n*(n-1)*. . . *(n-m+1) 就是了。應該會少很多位數吧? 02/10 23:30
6F:推 jsb:oops,忘了除以 (n-m)! 了 02/10 23:35
7F:→ jsb:建議方法:[n/(n-m)]*[(n-1)/(n-m+1)]*[(n-2)/(n-m+2)]. . . 02/10 23:38
8F:→ jsb:看 (n-m) 和 m 那個大,再繼續乘以或除以剩下沒配對到的序列。 02/10 23:40
9F:推 jsb:剛剛又發現不會有沒配對到的序列了。耍笨真抱歉。 02/10 23:51