Модификация генератора с помощью send - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу изменить генератор с помощью , только изменив функцию манипулировать_генератором ниже .Это кадровая проблема, которая заставляла меня чесать голову в течение дня.У меня появилась идея использовать отправку из предыдущего SO вопроса о четных числах .Я не могу приступить к работе с помощью проверки первичности.Алгоритм должен вывести первые 10 не простых чисел.В настоящее время он печатает 3.

from math import sqrt
from itertools import count, islice

def is_prime(n):
    if n < 2:
        return False

    for number in islice(count(2), int(sqrt(n) - 1)):
        if n % number == 0:
            return False

    return True

# this is the only portion of the code that can be changed  
def manipulate_generator(generator, n):
     if not is_prime(n):
         generator.send(n+1)


#all the code below cannot be changed 
def positive_integers_generator():
    n = 1
    while True:
        x = yield n
        if x is not None:
            n = x
        else:
            n += 1

k = int(input())
g = positive_integers_generator()
for _ in range(k):
    n = next(g)
    print(n)
    manipulate_generator(g, n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...