Nach Norm, Recht und Ordnung
Verfasst: Donnerstag 6. Dezember 2007, 14:29
Ich hab mich mal vor kurzem mit dem hier ja auch schon so oft behandelten Primzahlen-Thema beschäftigt. Ich glaube meine Lösung ist ganz in Ordnung.
Was mich persönlich viel mehr interessiert ist, in wie fern ich nach den bekannten Regeln der Formatierung gearbeitet habe.
Hier mal mein Ergebnis:
Randnotiz: Ich habe eine while-Schleife verwendet, da ich mir gewisse Teiler sparen wollte.
Freue mich über jede Anregung oder Verbesserungsvorschläge.
Danke im Vorraus,
Gruß Zack
Was mich persönlich viel mehr interessiert ist, in wie fern ich nach den bekannten Regeln der Formatierung gearbeitet habe.
Hier mal mein Ergebnis:
Code: Alles auswählen
from math import sqrt
from time import time
## Berechnet alle Primzahlen im Zahlenraum des letzten Array-Eintrages bis Max
#
# @param[in] array (@em Array) Liste mit bereits errechneten Primzahlen
# @param[in] max (@em int) Maximalwert der anzufertigenden Primzahlen-Liste
# @return (@em Array) Primzahlen-Liste
def prim( max, array):
result = 1
y = array[-1] + 2
while y <= max:
wurzel = sqrt(y)
for i in array:
if i > wurzel: break
if y%i == 0:
result = 0
break
if result: array.append( int(y) )
result = 1
y = y + 2
return array
## Algorithmus der ueberprueft, ob es sich um eine Primzahl handelt
#
# @param[in] array (@em Array) Liste mit bereits errechneten Primzahlen
# @param[in] go (@em int) Die zu ueberpruefende Zahl
# @return (@em int) Der kleineste Teiler, -1 bei Primzahlenstatus
def isprim( go, array = [2, 3] ):
wurzel = sqrt(go)
primresult = prim( wurzel, array )
for i in primresult:
if go%i == 0:
return i
return -1
## Junk&Trash 4 Tests
#
# http://de.wikipedia.org/wiki/Integer_(Datentyp)
if __name__ == '__main__':
start = time()
print isprim( 4294967295 )
print time() - start
Freue mich über jede Anregung oder Verbesserungsvorschläge.
Danke im Vorraus,
Gruß Zack