有人說階乘計算很慢,確實,如果按照定義去計算,那么多次乘法是很慢的。
但是事實上我們有現成的工具可用,比如伽瑪函數,斯特林公式。
其中gmp庫中就有現成的gamma函數,所以大數的階乘并不慢。
import gmpy2from gmpy2 import mpzdef stirling(z): return gmpy2.gamma(z+1)import timet=time.clock()PRint(stirling(mpz(30000000)))t=time.clock()-tprint(t)
結果:
2.0996305395095615e+211284807
0.000302
速度很快,但是更大的數就不行了,因為受制于gmp浮點數的上限
新聞熱點
疑難解答