2014-09-23 61 views
1

首先,我打算構建一個包含素數2的列表。 然後我應該循環遍歷數字3到大約10000,檢查每個數字是否可以被整除由列表中的每個元素計算所有等於或小於n的平方根的元素。 如果不是,則將該號碼添加到列表中。 到目前爲止,我有:Python:遍歷列表的一部分以查找素數

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 

我不確定如何打通素數的循環停止到達一個元素< =開方(N)時。

任何人都可以幫忙嗎?謝謝。

回答

1

使用takewhileitertools

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

退出循環,你可以使用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 

我希望這個答案你的問題。

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 

這是你在找什麼?