Первые 100 простых чисел в Python

93
11

Я начинаю в Python, и у меня есть вопрос относительно нахождения 100 простых чисел. Я знаю, что есть несколько способов сделать это, но, пожалуйста, помогите мне в моем подходе. Я считаю, что значение count увеличивается, но по какой-то причине условие цикла while не применяется. Благодарим за терпение и помощь.


from __future__ import print_function
count = 0

while(count <= 20):
for i in range(2,20):
for j in range(2,i):
if i < j:
print("The number",i,"is prime")
elif i % j == 0:
break
else:
print("The number",i,"is prime")
count = count + 1
print(count)

спросил(а) 2015-10-08T07:11:00+03:00 4 года, 7 месяцев назад
1
Решение
53

Вы можете использовать Сито Эратосфена, чтобы найти первые n простые числа:


def primes_upto(limit):
prime = [True] * limit
for n in range(2, limit):
if prime[n]:
yield n # n is a prime
for c in range(n*n, limit, n):
prime[c] = False # mark composites

Чтобы получить первые 100 простых чисел:

>>> list(primes_upto(542))
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, ... ,
499, 503, 509, 521, 523, 541]

Чтобы найти первые n простые числа, вы можете оценить n-th prime (передать верхнюю границу как предел) или использовать бесконечный генератор простых чисел и получите столько чисел, сколько вам нужно, например, используя list(itertools.islice(gen, 100)).

ответил(а) 2015-10-08T14:28:00+03:00 4 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема