2015-08-24 3 views
-5

Вот мой код:Python: найти 10-е простое число

n = 0 
counter = [] 

while len(counter) < 10: 
    n += 1 
    for k in range(2, n): 
     if n % k == 0: 
      pass 
     elif n % k != 0: 
      counter.append(n) 
      break 
print counter 

Результат выглядит следующим образом: [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Может кто-нибудь помочь мне с этим кодом или отдельным кодом, который делает ту же цель? Кроме того, может кто-нибудь объяснить мне, почему 6, 9 и 12 находятся в этом списке? Я думал, что цикл for с утверждением if и elif решил бы это уже.

+0

Потому что '6% 4! = 0',' 6% 5! = 0', '9% 2! = 0' и т. Д. –

+1

вы хотите только добавить n, если ** для ** ** все ** ** k **

+1

Есть номер из учебных пособий для создания кода на Python для поиска простых чисел, но похоже, что для вас это более учебное упражнение, поэтому я бы рекомендовал не советоваться с ними, если вы действительно не застряли. –

ответ

2

Если какой-либо k в диапазоне не делит n, то n добавляемый к counter списку. Вам нужно сделать что-то подобное, хотя это может быть более эффективным:

n = 1 
counter = [] 

while len(counter) < 10: 
    n += 1 
    for k in range(2, n): 
     if n % k == 0: 
      break 
    else: 
     counter.append(n) 

print counter 

выход

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29] 

else: блок является необязательным дополнением к петле for:. Он выполняется только в том случае, если мы не делаем break из цикла for:. Поэтому здесь мы добавляем только n в counter, если мы не найдем k, что является фактором n.

Смежные вопросы