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