在 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
取模,你应该添加括号并使用整数除法运算符 //
而不是浮点除法运算符 /
。我不确定您要做什么,所以我无法为您更正您的代码。但是请尝试 //
运算符。
我正在尝试使用一个代码来寻找威尔逊素数来找点乐子,并让我回到编码的摇摆之中,但是,当我尝试除以 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
取模,你应该添加括号并使用整数除法运算符 //
而不是浮点除法运算符 /
。我不确定您要做什么,所以我无法为您更正您的代码。但是请尝试 //
运算符。