Generatoren "lesen"
Verfasst: Mittwoch 3. Januar 2018, 15:14
Hallo liebe Community,
als ich auf der Suche nach "Primzahlen mit Python erzeugen" war, bin ich auf folgenden Code gestoßen:
Das Problem ist aber, dass ich nicht weiß, wie man diesen Code ausführt, sodass ich am Ende meine Primzahlen printen kann :K . Als ich recherchiert habe, stieß ich auf Generatoren etc., wobei ich da nicht ganz durchblicke. Vielen Dank im Voraus.
als ich auf der Suche nach "Primzahlen mit Python erzeugen" war, bin ich auf folgenden Code gestoßen:
Code: Alles auswählen
# Sieve of Eratosthenes
# Code by David Eppstein, UC Irvine, 28 Feb 2002
# http://code.activestate.com/recipes/117119/
def gen_primes():
""" Generate an infinite sequence of prime numbers.
"""
# Maps composites to primes witnessing their compositeness.
# This is memory efficient, as the sieve is not "run forward"
# indefinitely, but only as long as required by the current
# number being tested.
#
D = {}
# The running integer that's checked for primeness
q = 2
while True:
if q not in D:
# q is a new prime.
# Yield it and mark its first multiple that isn't
# already marked in previous iterations
#
yield q
D[q * q] = [q]
else:
# q is composite. D[q] is the list of primes that
# divide it. Since we've reached q, we no longer
# need it in the map, but we'll mark the next
# multiples of its witnesses to prepare for larger
# numbers
#
for p in D[q]:
D.setdefault(p + q, []).append(p)
del D[q]
q += 1