Weil Du in der prime()-Funktion nach spätestens einem Durchlauf die Funktion verlässt. Hättest Du durch ein einfaches print rausgefunden
Daher klappt meine Optimierung auch nicht. Habs auch grad gesehen.
Du solltest die Liste auch besser übergeben und direkt in der Funktion erweitern - somit vermeidest Du eine globale Variable.
Welchen Algo zur Berechnung willst Du denn eigentlich implementieren?
exec - Globale Variable; und Performance Problem
Nachdem wir nun wissen, dass Primzahlen nicht all zu selten sind, müssen wir uns nun ein
Verfahren überlegen, mit dem man feststellen kann, ob eine zufällig gewählte Zahl tatsächlich
prim ist.
Eine einfache Methode ist das so genannte Probedivision (engl. trial-testing). Die Grundidee
dieses Verfahrens ist, n sukzessive durch Primzahlen 2, 3, 5, 7, 11,..., < n (Sieb des
Eratosthenes) zu teilen.
Code: Alles auswählen
def prime (n):
for i in prime_numbers:
if i > math.sqrt(n):
if n % i == 0:
return None
return n
MfG Tompazi
Dann denke doch noch einmal über die Position des letzten return nach. Zur Not füge einfach zwischen zwei Zeilen immer ein print ein und lasse dir etwas ausgeben.Tompazi hat geschrieben:Leider bekomme ich da zu viele nicht Primzahlen zurück...
Auch die erste Bedingung in der Schleife ist falsch.
i<sqrt(n) <=> i**2 < n; i,n >= 0
Edit: ja, meine ich
Zuletzt geändert von EyDu am Sonntag 2. August 2009, 17:36, insgesamt 1-mal geändert.
Das Leben ist wie ein Tennisball.