Neulich habe ich einen Artikel wie diesen geschrieben: "Primäre Aufzählung und Primbestimmung in Python". Nachdem ich dies veröffentlicht hatte, machte ich plötzlich Python 3 für "Infinite Prime Generator", also werde ich es in Qiita veröffentlichen (ich denke, es ist nicht praktisch ...)
Geht es um "itertools.count" und "functools.partial"? Ersteres erzeugt einen unendlichen Strom von ganzen Zahlen, und letzteres implementiert eine teilweise Anwendung auf Methoden.
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