我正在尝试使方程(2^g - p) / x
与我的代码一起运行,但是遇到溢出错误。我想知道是否有办法解决这个问题。
import math as m
import decimal as d
d.getcontext().prec = 100000000000000
variable = int(input("Enter Number: "))
def Namespace(x): # the point of this function is to put input shift variables to find a whole number result
g = 1
p = 1
D = []
while len(D) == 0:
if x < (2**g-p):
count = 0
while count != 3:
f = ((2**g)-p)/x # Here is where the Error Happens
a = m.log(f,3)
if a.is_integer == True:
c = [d.Decimal(a), d.Decimal(g)] # adds Decimal to List
D.append(c)
count = 3
else:
g += 1
count += 1
else:
g +=1
p = find_next_prime(p+1)
print(D)
def find_next_prime(n):
return find_prime_in_range(n, 2*n)
def find_prime_in_range(a, b):
for p in range(a, b):
for i in range(2, p):
if p % i == 0:
break
else:
return p
return None
Namespace(variable)
答案 0 :(得分:1)
当您要求小数点后一百万亿位时,它就会出现溢出问题,这不足为奇。您是否要指定它应该能够处理最多15位的数字?您应为其指定
d.getcontext().prec = 15
这么多小数位将超过世界上几乎所有计算机的大容量存储容量,不用管RAM。