我试图在Python中创建一个函数,以检查给定的数字是否为素数,因此我编写了以下代码:
def is_prime(x):
if x<2:
return False
elif x==2:
return True
else:
for n in range(2,x):
if (x%n)==0:
return False
else:
return True由于某种原因,每一个(Prime_number*3)和的数都表示为素数(例如,这些数字表示为素数:9,21,15,25.)有人能看出我的代码有问题吗?
发布于 2015-05-31 04:32:59
因为您在循环的第一次迭代中是return的。在循环耗尽之前,您不可能知道某些东西是最佳的。因此,在迭代完成之前不要返回True。
def is_prime(x):
if x<2:
return False
elif x==2:
return True
else:
for n in range(2,x):
if (x%n)==0:
return False
return True发布于 2015-05-31 04:33:38
这是会发生的,因为在循环的第一次迭代中,您就从is_prime返回。您可以测试x是否可以被2除,如果是,则返回True,否则返回False。
从循环中删除else子句,并在它结束后返回True。
def is_prime(x):
if x<2:
return False
elif x==2:
return True
else:
for n in range(2,x):
if (x%n)==0:
return False
return True发布于 2015-05-31 08:24:47
一个更有效的方法只能迭代x的平方根。
import math;
def isPrime(x):
if x < 2:
return False;
elif x == 2:
return True;
else:
for n in range(2, int(math.sqrt(x))+1):
if x%n == 0:
return False;
return True;
# Test the method for first 50 natural numbers
for i in range(51):
if isPrime(i):
print i;https://stackoverflow.com/questions/30553824
复制相似问题