Welcome, guest | Sign In | My Account | Store | Cart
def filterout(L1,L2):
""" inplace substraction of two lists"""
for i in L1:
if i in L2:
L2.remove(i)

def is_prime(n):
""" check if n is prime"""
i = 2
if n <=1:
return False
Sqrt_Of_n = n**0.5
while i <= Sqrt_Of_n:
if n % i == 0:
return False
i += 1
else:
return True

def primeGen(n):
"""
After the first 5 primes the next prime number is the sum of  the last 2
minus the three prime numbers back
if it is not a prime number we go for the next one

"""
primes= [2,3,5,7,11]
if n in xrange(1,len(primes)+1):
return primes[:n]
else:
banlist=[]
count = 6
while count <= n :
Next = (primes[-2] + primes[-1]) - primes[-3]
if not is_prime(Next):
count -=1
banlist.append(Next)
count +=1
primes.append(Next)
filterout(banlist,primes)
return primes

if __name__ == '__main__':
print primeGen(1000)

#### Diff to Previous Revision

--- revision 1 2010-06-12 08:06:02
+++ revision 2 2010-06-12 08:22:40
@@ -33,12 +33,12 @@
banlist=[]
count = 6
while count <= n :
-                res = (primes[-2] + primes[-1]) - primes[-3]
-                if not is_prime(res):
+                Next = (primes[-2] + primes[-1]) - primes[-3]
+                if not is_prime(Next):
count -=1
-                    banlist.append(res)
+                    banlist.append(Next)
count +=1
-                primes.append(res)
+                primes.append(Next)
filterout(banlist,primes)
return primes