Python:循环遍历列表的一部分以查找素数

时间:2014-09-23 15:18:08

标签: python

首先,我打算构建一个包含素数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)时如何使循环遍历素数停止。

有人可以帮忙吗?谢谢。

3 个答案:

答案 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

这就是你要找的东西吗?