L'autre jour, j'ai écrit un article comme celui-ci: "Énumération primaire et détermination principale en Python". Après avoir publié ceci, j'ai soudainement créé Python 3 pour "Infinite Prime Generator", donc je vais le publier sur Qiita (je pense que ce n'est pas pratique ...)
Le point est-il autour de ʻitertools.count et functools.partial`? Le premier crée un flux infini d'entiers et le second implémente une application partielle aux méthodes.
import itertools, functools, math
def prime_stream():
    stream = itertools.count(2)
    sieve = lambda x, y: x % y != 0
    while True:
        prime = next(stream)
        stream = filter(functools.partial(sieve, y=prime), stream)
        yield prime
if __name__ == '__main__':
    primes = prime_stream()
    for _ in range(20): print(next(primes))
    
# 2
# 3
# 5
# 7
# 11
# 13
# 17
# 19
# 23
# 29
# 31
# 37
# 41
# 43
# 47
# 53
# 59
# 61
# 67
# 71
        Recommended Posts