Um Primzahlen zu generieren nutze ich ein Programm, das auf dem Sieb des Eratosthenes aufbaut:
Code: Alles auswählen
class Prim(object):
# Folgender Funktionsaufruf liefert alle Primzahlen unter 1000:
# primes = MyMath.Prim(1000).getPrimes()
def __init__(self, limit):
self.limit = limit
self.gestrichen = [False] * (self.limit / 2)
self.calculate()
def calculate(self):
i = 3
while i*i <= self.limit:
if self.gestrichen[i - 2] == False:
# i ist prim, streiche seine Vielfache
a = i*i / 2
for j in xrange(a, (self.limit / 2),i):
self.gestrichen[j] = True
i += 2
def getPrimes(self):
p = [2]
for i in xrange(1, (self.limit / 2)):
if self.gestrichen[i] == False:
p.append(2 * i + 1)
return p
raorao