在 Python 中输入大数时出现溢出错误

Overflow Error When Diving Large Numbers In Python

我正在尝试使用一个代码来寻找威尔逊素数来找点乐子,并让我回到编码的摇摆之中,但是,当我尝试除以 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

OverflowError: integer division result too large for a float

我改了代码,发现把数字173当成x就报错了。谁能告诉我为什么会这样?我环顾四周,但只找到说 python 中使用的数字大小没有限制的答案。提前致谢

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

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

因为 x 是一个整数,阶乘 returns 也是一个整数。然而,1 / 5 在 Python 3 returns 中的浮点值 0.2。将整数添加到浮点数 returns 浮点数,因此 Python 尝试将阶乘转换为浮点数。

然而,Python 3 的整数可以是任意大小,但浮点数不是这样。浮点值仅限于计算机的数字处理器,通常为 8 个字节长,并且具有最大大小。超出了这个大小,所以 Python returns 一个错误。

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