OverflowError python大计算(除法)

时间:2015-08-12 22:56:37

标签: python overflow division

我试图编写一个程序来通过Python找到奇怪的加泰罗尼亚数字,但显然Python不能划分非常大的数字。 谁知道我怎么能绕过这个? 这是我的代码:

# catalan number python program

import math

f = math.factorial

def ncr(n,r):
    return f(n)//(f(r)*f(n-r))


def catalan(x):
    return (ncr(2*x,x)/(x+1))


for i in range(1,600):
    z = catalan(i)
    if not z%2 == 0:
        print(str(i) + ' : ' + str(z))

我试图获得至少前10,000个加泰罗尼亚数字,但我的代码目前甚至无法处理1000.我不需要打印出大数字。我只想知道它的编号是多少。

编辑:添加导入数学(哎呀),错误是:

Traceback (most recent call last):
  File "C:/Python34/catalan odd tester.py", line 18, in <module>
    z = catalan(i)
  File "C:/Python34/catalan odd tester.py", line 14, in catalan
    return (ncr(2*x,x)/(x+1))
OverflowError: integer division result too large for a float

1 个答案:

答案 0 :(得分:0)

这是一个提示。代码可以找到加泰罗尼亚语的数字。您只需添加语句即可找到奇数

def catalan(n):
    res = 0
    if( n <= 1):
        return 1
    for i in range(n):
        res += catalan(i) * catalan(n-i-1)
    return res
def main():
    for i in range(1000):
        print(catalan(i))
    return 0
main()