Ich spielte mit der Python-Shell und ich habe, was ich glaube, eine extrem naive Implementierung einer Funktion, die einfach die erste Primzahl in einer Liste von 100 zufällig generierten Zahlen zurückgibt (deren Werte zwischen 0 und 99 liegen, inklusive). Code unten:Erste Prime in einer Liste von Zufallszahlen
>>> def is_prime(n):
if n < 2:
return False
elif n == 2:
return True
for i in range(2, n):
if n % i == 0:
return False
return True
>>> from random import randint
>>> numbers = []
>>> for i in range(0, 100):
numbers.append(randint(0, 99))
>>> def get_first_prime(values):
temp = []
for i in values:
if is_prime(i):
temp.append(i)
return temp[0]
>>> get_first_prime(numbers)
Ich möchte diese Funktion nur die erste Primzahl strikt zurück. Meine Implementierung verwendet eine Hilfsliste, um alle Primzahlen zwischenzuspeichern und dann das Element einfach an den ersten Index zurückzugeben. Es funktioniert, aber ich bin nicht davon überzeugt, dass es ein guter ist. Ich bin mir sicher, dass es einen effizienteren Weg gibt, dies zu tun, der nicht das Durchsuchen der gesamten Liste erfordert, aber ich kann noch nicht an einen denken.
Was sind bessere Alternativen?
Nur ein kleiner Tipp: Wenn Sie die Teilbarkeit prüfen, um eine verdächtige Primzahl zu testen, müssen Sie keine höheren Zahlen als '' sqrt (n) '' prüfen. Mit dieser Änderung würde das "for" in der '' is_prime (n) '' Funktion wie folgt aussehen: "Für i in Bereich (2, int (sqrt (n))): ...' '(und du müsste '' von math import sqrt'' um die '' sqrt() '' Funktion verfügbar zu bekommen). – zegkljan
verwandt: [Was ist der beste Algorithmus für die Überprüfung, ob eine Zahl ist Prim?] (Http://StackOverflow.com/Q/1801391/4279) – jfs