Ich habe eine Python-Klasse, die die n-te Primzahl erzeugt, indem sie bei der n-1ten Primzahl beginnt und inkrementiert. Dann wird durch alle Primzahlen bereits in der Liste bis zum Boden (sqrt (Kandidat)) geteilt. Aber meine Klasse gerät irgendwo in eine unendliche Schleife und ich kann nicht verstehen warum.Memoization mit Primzahlengenerator
class prime_list():
def __init__(self):
self.primelst = [1]
self.n = 1
def increment(self):
self.n+=1
candidate = self.primelst[-1]+1
limit = int(math.floor(math.sqrt(candidate)))
prime = True
while True:
for p in self.primelst:
if p>limit:
break
if (candidate % p) == 0:
prime = False
break
if prime:
self.primelst.append(candidate)
return
else:
candidate += 1
limit = int(math.floor(math.sqrt(candidate)))
prime = True
if __name__=="__main__":
p = prime_list():
p.increment()
Zeigen Sie uns, wie Sie diesen Code aufrufen. – Falmarri
Ich habe es bearbeitet, um zu zeigen, was ich gerade mache. Schließlich möchte ich diese Klasse in etwas anderem verwenden, aber ich möchte es testen, um zu sehen, ob es die Primzahlen ok erzeugt, indem ich increment anrufe und sehe, was die Liste enthält. Increment kehrt nie zurück, wenn ich es anrufe. –