我一直在尝试制作一个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的“//”运算符,它会产生整数结果。