我创建了一个程序来计算米尔的常数,但是无论如何,它导致完成了巨大的计算。例如,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
要执行更准确的计算,您需要使用更好的起始分数,但这会导致n
和d
更快地生长。
谢谢,@pm 2ring和@blurp!您通过指出十进制模块来帮助我很多,这正是我需要的!事实证明559397567061773305900 ...是Prime!