尝试运行一组计算但遇到溢出错误

时间:2019-07-04 19:28:37

标签: python error-handling

我正在尝试使方程(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)

1 个答案:

答案 0 :(得分:1)

当您要求小数点后一百万亿位时,它就会出现溢出问题,这不足为奇。您是否要指定它应该能够处理最多15位的数字?您应为其指定

d.getcontext().prec = 15

这么多小数位将超过世界上几乎所有计算机的大容量存储容量,不用管RAM。