Python генератор не простых чисел - PullRequest
0 голосов
/ 16 апреля 2019

Мне нужна помощь с этой задачей:

Если задано целое число k, выведите первые k не простых натуральных чисел, каждое в новой строке.

Iпробовал несколько способов, но, кажется, не может взломать его.Есть ли способ найти это решение?

Вот мой код:

def manipulate_generator(generator, n):
    # Enter your code here
      new_number = []

      for x in range(1, n):
          if n % x == 0:
            new_number.append(x)


      return new_number

1 Ответ

0 голосов
/ 16 апреля 2019

Вы можете использовать набор для хранения простых чисел, которые вы уже нашли, и попытаться разделить каждое возможное целое число 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
...