Вы можете использовать набор для хранения простых чисел, которые вы уже нашли, и попытаться разделить каждое возможное целое число n
на известные простые числа, и, если оно делится, выведите число; в противном случае сохраните номер как простое число в наборе. Продолжайте увеличивать n
, пока не будет получено k
не простых чисел. Сначала выведите 1
, потому что это единственное не простое число, которое не делится на простое число:
def nonprimes(k):
if k > 0:
yield 1
primes = set()
n = 2
while k > 1:
for prime in primes:
if n % prime == 0:
yield n
k -= 1
break
else:
primes.add(n)
n += 1
так что:
for n in nonprimes(10):
print(n)
выходы:
1
4
6
8
9
10
12
14
15
16