首先,我打算构建一个包含素数2的列表。 然后我应该循环遍历数字3到大约10000,检查每个数字是否可以被列表中的每个元素整除,因为所有元素都等于或小于n的平方根。 如果没有,则将该号码添加到列表中。 到目前为止,我有:
from math import sqrt
primes = [2]
for n in xrange(3,10000):
if all(n % p for p in primes):
primes.append(n)
else:
continue
print primes
我不确定当达到元素< = sqrt(n)时如何使循环遍历素数停止。
有人可以帮忙吗?谢谢。
答案 0 :(得分:1)
使用itertools
中的takewhile
:
>>> from itertools import takewhile
>>> n, primes = 11, [2, 3, 5, 7, 11, 13, 17]
>>> all(n % p for p in takewhile(lambda p: p * p < n + 1, primes))
True
答案 1 :(得分:1)
要退出循环,您可以使用break
关键字,例如:
list = [1,2,3,4,5,6,7,8,9,10]
for value in list:
if value == 5:
break
print(value)
会给你:
1
2
3
4
我希望这能回答你的问题。
答案 2 :(得分:0)
from math import sqrt
from math import ceil #takes the ceiling of a number there is also floor instead
primes = [2]
for n in xrange(3,int(ceil(sqrt(10000)))): #take the int of the ceiling of square root
if all(n % p for p in primes):
primes.append(n)
else:
continue
print primes
这就是你要找的东西吗?