![](/img/trans.png)
[英]What is the fastest way to compare a text with a large number of regexp with python?
[英]What is the fastest way to find the exact value of the factorial of a large number in python?
我的目标是要找到阶乘的数字的特别大的值,例如 - 12345678!。 甚至 python 中的math.factorial(12345678)
需要大量时间来计算这样一个数字的阶乘。
我尝试使用斯特林近似来计算相同的值,但它没有给出确切的值。 有没有其他方法可以计算相同的?
编辑 1:这是我尝试计算数字阶乘中尾随零的代码的预览
import math
def main():
total_cases = int(eval(raw_input()))
for case in xrange(total_cases):
number = int(eval(raw_input()))
if number >= 1e9:
break
factorial_n = math.factorial(number)
count = 0
for i in xrange(1, number):
temp = 10**i
if factorial_n % temp == 0 :
count += 1
else:
print count
break
main()
编辑 2:我刚刚发现瓶颈是分割步骤。
scipy
对近似值和精确值都有一个快速的 C 实现。
scipy.misc.factorial(12345, exact=True)
我自己试过了,不到一秒钟。
但是在尝试math.factorial(12345)
它也需要不到一秒钟的时间。 你自己试过这个吗?
def factorial(n):
result = 1
for i in range (1, (n +1)):
result = i * result
return result
print (factorial (100))
此代码使用范围函数和 for 循环计算数字的阶乘。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.