如何从Python 3中的计算中固定溢出误差



我创建了一个程序来计算米尔的常数,但是无论如何,它导致完成了巨大的计算。例如,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

这是使用整数计算磨坊的素数的方法。首先,您需要将磨坊的常数写为分数。我使用了Wikipedia文章中的价值之一。

num, den = 1551795687, 1187861266
print(num / den)
for i in range(1, 8):
    e = 3 ** i
    n = num ** e
    d = den ** e
    print(i, n // d)

输出

1.3063778838630806
1 2
2 11
3 1361
4 2521008887
5 16022236204009819034551083884
6 4113101149215105495247660946168530631843333312378291569324941703732418013747202413154
7 69583804376962776892757521964751417769589800913915250464742380681561387050414758147961918413247296927859465626141517084928624751186191429632740787663513270579366994745400890812584434492059975056388739246886951607326825627525396066637918379217513934013930

要执行更准确的计算,您需要使用更好的起始分数,但这会导致nd更快地生长。

谢谢,@pm 2ring和@blurp!您通过指出十进制模块来帮助我很多,这正是我需要的!事实证明559397567061773305900 ...是Prime!

相关内容

  • 没有找到相关文章

最新更新