如何在python中找到大数量的阶乘链?

时间:2015-10-26 13:34:01

标签: python python-2.7

如果数字为3!!,则6!结果为720。 此代码适用于小整数,但对大整数抛出错误Python int too large to convert to C long。需要帮忙。感谢

import math
n = raw_input()
a = n.count('!')
b= int(n.replace('!',''))
while(a!=0):
    fact =1*math.factorial(b)
    b = fact
    a-=1
print fact

1 个答案:

答案 0 :(得分:0)

如果math.factorial不支持这么大的数字你可以自己做:

    fact = reduce(lambda x, y: x * y, [x+1 for x in range(b)])

    >>> 4!!
    620448401733239439360000

然而,@ interjay是正确的,math.factorial()应该在合理的时间内适用于最多8的数字。无论如何,算法应该是正确的,它可能永远不会回来或大量内存耗尽。