有人说阶乘计算很慢,确实,如果按照定义去计算,那么多次乘法是很慢的。
但是事实上我们有现成的工具可用,比如伽玛函数,斯特林公式。
其中gmp库中就有现成的gamma函数,所以大数的阶乘并不慢。
import gmpy2 from gmpy2 import mpz def stirling(z): return gmpy2.gamma(z+1) import time t=time.clock() print(stirling(mpz(30000000))) t=time.clock()-t print(t)
结果:
2.0996305395095615e+211284807
0.000302
速度很快,但是更大的数就不行了,因为受制于gmp浮点数的上限