2015-03-07 4 views
0

Почему это не остановится, когда len (prime) увеличивается до 9, Я также пробовал использовать счетчик, но это тоже не сработало. В этом случае он работает до тех пор, пока он не проверит простые числа до 100, пока не найдет первые 10 простых чисел.Не удается остановить этот цикл

prime = [2] 

    odd_list = [x for x in range(100) if x % 2 != 0 and x > 2] 
    count = 0 
    while len(prime) < 10: 
     for z in odd_list: 
      for y in range(2, z): 
       if z % y == 0:    # is not prime 
        break 
      else: 
       prime.append(z) 
       count += 1 
    print 'count = ', count 
    print 'length of prime =', len(prime) 
    print prime 
+0

Вы знаете, что 'range' может принимать аргумент' step'. – khelwood

ответ

0

Вы должны проверить количество простых чисел во внутреннем цикле:

prime = [2] 

odd_list = [x for x in range(100) if x % 2 != 0 and x > 2] 
count = 0 
for z in odd_list: 
    for y in range(2, z): 
     if z % y == 0:    # is not prime 
      break 
    else: 
     prime.append(z) 
     count += 1 

    if len(prime) >= 10: 
     break 
print 'count = ', count 
print 'length of prime =', len(prime) 
print prime 

В каждом Интерактивном внешнем while цикле запуск всего for цикла:

while len(prime) < 10: 
    for z in odd_list: 
     ... 

так после первой while итерации все простые числа уже будут найдены, и только тогда вы остановите цикл while.

+0

Спасибо, что хорошо работает – bkane56

+0

@ bkane56, пожалуйста, отметьте мой ответ как принятый, если он сработает для вас. – rutsky