在Python中插入大数时发生溢出错误

2024-09-24 04:30:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用一个代码来寻找Wilson素数,以获得一些乐趣,并让我回到编码的摇摆中,然而,当我试图除以172时,我发现!+它给我一个溢出错误。以下是我使用的代码:

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中使用的数字大小没有限制。提前谢谢


Tags: and代码import编码if错误数字math
1条回答
网友
1楼 · 发布于 2024-09-24 04:30:45

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

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

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

然而,python3的整数可以是任意大小,但对于float则不是这样。浮点值仅限于计算机的数字处理器,通常为8字节长,并且具有最大大小。超出了该大小,因此Python返回一个错误。在

如果你想在阶乘上加一个,然后把这个和除以5,然后用x取模,你应该加上括号并使用整型除法运算符//,而不是浮点除法运算符/。我不知道你想做什么,所以我不能为你更正你的代码。但是试试//运算符。在

相关问题 更多 >