【发布时间】:2017-11-27 03:39:42
【问题描述】:
我创建了一个程序来计算带有米尔常数的素数,但无论如何,它会导致进行大量计算。例如,1.306... ** 5661
它会引发溢出错误。我怎样才能解决这个问题?我尝试了 xrange,但它没有帮助我,因为它不再存在于 python 3 中。我不知道如何减少它。
谁能帮帮我?非常感谢!
编辑:这是代码:
theta = 1.3063778838630806904686144926026
bottom = int(input("lower bound: "))
top = int(input("high bound: "))
for i in range(0,top + 1):
print(round(theta ** (3**i))) # causes the error
【问题讨论】:
-
将您的代码与问题一起发布,它将帮助其他人了解您的问题的问题
-
我刚刚发布了代码
-
你的意思是Mill's constant?米勒是一个不同的素数研究员。
-
range在 Python 3 中的行为类似于 Python 2 的xrange。但这不是你的问题。密尔公式产生的数字迅速变得庞大,大到无法放入浮点数。您可以改用decimal模块,在内存不足之前获取更多值。另一种选择是使用有理数进行计算:将 Mill 常数表示为分数,然后使用//地板除法将分子除以分母,得到整数答案。
标签: python python-3.x integer-overflow