在 Python 中潜水大量数据时出现溢出错误



我正在尝试使用代码来寻找Wilson Primes以获得一些乐趣,并让我回到编码的摇摆中,但是,当我尝试除以172时,我发现! +1 到 173 时,它给了我一个溢出错误。这是我正在使用的代码:

import math
x = 2
while x < 1000:
    if math.factorial(x-1) + 1 % x == 0 and (math.factorial(x-1) + 1 / 5) % x == 0 :
        print(x)
    x += 1

当我跑步时,它会给我:

5

13

溢出错误:整数除法结果对于浮点数来说太大

我更改了代码,发现一旦将数字 173 用作 x,就会发生错误。谁能让我知道为什么会这样?我环顾四周,但只找到答案,说python中使用的数字大小没有限制。提前致谢

问题不在于阶乘,而在于你的计算

(math.factorial(x-1) + 1 / 5) % x

由于 x 是一个整数,因此阶乘返回一个整数。但是,Python 3 中的1 / 5返回浮点值 0.2 。将整数添加到浮点数会返回浮点数,因此 Python 尝试将阶乘转换为浮点数。

但是,Python 3 的整数可以是任何大小,但浮点数并非如此。浮点值仅限于计算机的数字处理器,通常为 8 个字节长,并具有最大大小。超出该大小,因此 Python 返回错误。

如果您的意思是将 1 添加到阶乘中,然后将该总和除以 5,然后将模数与 x 一起取,您应该添加括号并使用整数除法运算符//而不是浮点除法运算符 / 。我不确定你想做什么,所以我无法为你纠正你的代码。但请尝试使用//运算符。

最新更新