【发布时间】:2011-11-04 00:30:38
【问题描述】:
我写了一个函数来计算一个数字是否是素数,但尽管尝试,它似乎无法给出正确的响应。它还打印正在递增的 n 值。这是函数的代码(顺便说一下,在 Python 中):
def isPrime(x):
for n in range(1, x):
print n
if x % n == 0:
return False
return True
如果我输入
isPrime(17)
函数返回
1
False
这里出了什么问题?
【问题讨论】:
-
质数定义错误
-
附带说明:优化素数检查器的方法有加载种,但一种简单的方法是:检查到 x 的平方根。因此,添加
from math import sqrt, floor,然后将您的范围更改为range(2,floor(sqrt(x))) -
你的原始逻辑,作为pythonic one liner:
def isPrime(x): return x > 1 and all(x % n for n in xrange(2,x))