Ich versuche, ein Programm in Python zu erstellen, das die n-te Glückszahl gemäß dem Glückszahl-Sieb generiert. Ich bin ziemlich neu in Python, also weiß ich noch nicht, wie ich das alles machen soll. Bisher habe ich herausgefunden, wie ich eine Funktion erstelle, die alle Glückszahlen unterhalb einer bestimmten Zahl bestimmt:
def lucky(number):
l = range(1, number + 1, 2)
i = 1
while i < len(l):
del l[l[i] - 1::l[i]]
i += 1
return l
Gibt es eine Möglichkeit, dies zu ändern, damit ich stattdessen die n-te Glückszahl finden kann? Ich habe daran gedacht, die angegebene Zahl allmählich zu erhöhen, bis eine Liste der erforderlichen Länge erstellt wurde, um die benötigte Glückszahl zu finden, aber das scheint wie eine wirklich ineffiziente Möglichkeit zu sein.
Bearbeiten: Ich habe das herausgefunden, aber gibt es einen besseren Weg?
def lucky(number):
f = 2
n = number * f
while True:
l = range(1, n + 1, 2)
i = 1
while i < len(l):
del l[l[i] - 1::l[i]]
i += 1
if len(l) >= number:
return l[number - 1]
f += 1
n = number * f