如何管理巨大的除法 – 整数除法结果对于浮点来说太大

问题描述 投票:0回答:1

我一直在尝试制作一个Python脚本来判断一个数字是否是素数。我已经按照自己的方式尝试过,但遇到了一个大问题。

当我尝试除以一个大数时,它会给我一个错误

OverflowError: integer division result too large for a float
。我发现,如果我在除法处使用
//
方法,它就会停止给我这个错误,但我找不到一种方法来查找该数字是否为质数。

这是我制作的第一个脚本,给出了

OverflowError: integer division result too large for a float

product = 1      
list = []
i = 13
for num in range(i):
    list.append(num)

list = [x for x in list if x != 0]

for x in list:
    product *= x

final = product + 1
final2 = final/i

if float.is_integer(final2) == True:
    print("Prime")
else:
    print("Not prime")

如您所见,我曾经将

final
除以
i
。如果该数字是质数,它将返回
float.is_integer
。但如果
i
变量是一个很大的数字,则会给出错误。 然后我使用了
//
方法,但我不知道如何检查该数字是否为质数。 这是第二个脚本,它是相同的,但将
/
替换为
//

list = []
i = 17
for num in range(i):
    list.append(num)

list = [x for x in list if x != 0]

for x in list:
    product *= x

final = product + 1
final2 = final//i

if final2%1 == 0: #Here I have no idea of how to check if is a prime
    print("Prime")
else:
    print("Not prime")

我知道这不是检查数字是否素数的最佳方法。

python math numbers
1个回答
0
投票

问题在于“/”运算符产生浮点结果,在这种情况下,结果太大而无法放入浮点数。

解决方案是使用Python的“//”运算符,它会产生整数结果。

© www.soinside.com 2019 - 2024. All rights reserved.