ich hab einfach zum Spass mal versucht, mit Python die Primzahlen errechnen zu lassen von 2 bis zu einer Grenze [bis]. Erst heb ich einfach jedes Element der Liste auf "Primheit" überprüft - nicht sehr effizient das Ganze... dann hab ich angefangen, Regeln einzubauen, die das Ganze schneller machen.
Irgendwann bin ich dann auf Sieb des Eratosthenes (oder so) gestossen und hab dies versucht, umzusetzen - mit Erfolg eigentlich, das hat so ausgeschaut:
Code: Alles auswählen
# -*- coding: cp1252 -*-
import time
def primzahlen(bis):
"""Gibt die Primzahlen von 1 bis [bis] zurück"""
alle = range(2, bis + 1)
for zahl in alle:
if zahl > (bis / 2):
break
f_min = 2
f_max = bis / zahl
for f_x in range(f_min, f_max + 1):
vielfaches = zahl * f_x
if vielfaches in alle:
alle.remove(vielfaches)
return alle
t_a = time.clock()
ni = primzahlen(10000)
t_b = time.clock()
t_passed = t_b - t_a
print ni
print len(ni)
print t_passed
Code: Alles auswählen
# -*- coding: cp1252 -*-
import time
def primzahlen(bis):
"""Gibt die Primzahlen von 1 bis [bis] zurück"""
alle = range(2, bis + 1)
for zahl in alle:
if zahl > 9:
break
f_min = 2
f_max = bis / zahl
for f_x in range(f_min, f_max + 1):
vielfaches = zahl * f_x
if vielfaches in alle:
alle.remove(vielfaches)
return alle
t_a = time.clock()
ni = primzahlen(10000)
t_b = time.clock()
t_passed = t_b - t_a
print ni
print len(ni)
print t_passed
Geht Ihr mit mir einig oder seht ihr noch weitere Punkte / andere Ansätze..?
Cheers!