我试图写一个程序来通过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发布于 2015-08-13 07:07:50
这里有一个提示。代码可以找到加泰罗尼亚数字。现在只需添加语句即可找到奇数
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()https://stackoverflow.com/questions/31976778
复制相似问题