Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. import math
  2.  
  3. def sieveOfAtkin(numberToNotExceed):
  4.  
  5.     listOfPrimes = [2, 3, 5]
  6.     sieve = [False] * (numberToNotExceed + 1)
  7.     integerRootOfNumberToNotExceed = int(math.sqrt(numberToNotExceed)) + 1
  8.    
  9.     for x in range(1, integerRootOfNumberToNotExceed):
  10.         for y in range(1, integerRootOfNumberToNotExceed):
  11.             entryNumber = 4 * x ** 2 + y ** 2   ###   n = 4x^2 + y^2
  12.            
  13.             if (entryNumber <= numberToNotExceed) and (entryNumber % 12 == 1 or entryNumber % 12 == 5):
  14.                 sieve[entryNumber] = not sieve[entryNumber]
  15.                
  16.             entryNumber = 3 * x ** 2 + y ** 2   ###   n = 3x^2 + y^2
  17.            
  18.             if (entryNumber <= numberToNotExceed) and (entryNumber % 12 == 7):
  19.                 sieve[entryNumber] = not sieve[entryNumber]
  20.                
  21.             if x > y:
  22.                 entryNumber = 3 * x ** 2 - y ** 2   ###   n = 3x^2 - y^2
  23.                
  24.                 if (entryNumber <= numberToNotExceed) and (entryNumber % 12 == 11):
  25.                     sieve[entryNumber] = not sieve[entryNumber]
  26.  
  27.  
  28.     for index in range(5, integerRootOfNumberToNotExceed):
  29.         if sieve[index]:
  30.             for composite in range(index ** 2, numberToNotExceed, index ** 2):
  31.                 sieve[composite] = False
  32.  
  33.  
  34.     for index in range(7, numberToNotExceed):
  35.         if sieve[index]:
  36.             listOfPrimes.append(index)
  37.  
  38.     return listOfPrimes
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement