(一),用Python简单实现大数阶乘的全部结果位数:
计算时间:
N=10000,耗时: 0.062秒
N=100000, 耗时: 14.1秒
#-*-coding:utf8;-*-
# 大数阶乘计算
# Idealguy,2018
import time
def factoria(N):
a=1
for i in range(2,N+1):
a*=i
return a
t=()
N=100000
a=factoria(N)
t=()-t
# print (a)
print("耗时: %10.5f秒" % (t))
(二),采用分治法提高大数的阶乘计算速度
计算时间:
N=10000,耗时: 0.026秒
N=100000, 耗时: 1.40秒
#-*-coding:utf8;-*-
# 分治法加快大数阶乘计算的速度
#
import time
def factoria(N):
N2=N
a=list(range(1,N+1))
while N2>1:
N1=N2%2; N2=N2//2+N1
for i in range(N2-N1):
a[i]*=a[N2+i]
a=a[0:N2]
return a[0]
t=()
a=factoria(100000)
t=()-t
print (a%10000000000)
print("耗时: %10.5f秒" % (t))