当我需要确定数字x是否为素数时,我有一点问题。 x将是一个随机生成的正整数,当我执行代码时,我得到以下消息:
Your function fails on is_prime(2). It returns None when it should return True.
我的代码:
def is_prime(x):
if x < 2:
return False
else:
for n in range(2, x):
while x % n == 0:
return False
break
else:
return True
我希望while循环迭代n == 2直到n ==(x-1)但它似乎没有做到! 我做错了什么?
答案 0 :(得分:0)
你可以更简单地编写这个函数:
import math
def is_prime(n):
if n % 2 == 0 and n > 2:
return False
for i in range(3, int(math.sqrt(n)) + 1, 2):
if n % i == 0:
return False
return True
因此,您对is_prime(2)的调用不会通过if测试,也不会在for run中使用,只会返回True。
如果它们大于3且不均匀,则应测试所有其他素数。