Advertisement
Guest User

Untitled

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