我试图编写一个程序来通过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
答案 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()