Search
 
SCRIPT & CODE EXAMPLE
 
CODE EXAMPLE FOR PYTHON

How to find all primes less than some upperbound efficiently?

"""
Implementation of the "Sieve of Eratosthenes" 
algorithm.
It aims at finding all primes that are less 
than or equal to a certain upperbound, 
denoted by n. 
Time complexity: O(n log log n) 
Space complexity: O(n)
"""
import math

def findPrimes(n):
    # Only 1 prime <= 2
    if n <= 2:
        return [2]
    """
    Initialize numbers[0] and numbers[1] as False
    because 0 and 1 are not prime.
    Set numbers[2] through numbers[n-1] to True
    When we find a divisor for one of them, set
    it to False
    """
    numbers = [False, False] + [True] * (n - 1)
    sqrtN = int(math.sqrt(n))
    for p in range(2, sqrtN + 1):
        if numbers[p]:
            # Set all multiples of p to false
            # because they are not prime.
            for multiple in range(p * p, n+1, p):
                numbers[multiple] = False
    # put all primes in a list
    result = []
    for p in range(n+1):
        if numbers[p]:
            result.append(p)
    return result

print(findPrimes(13))  # [2, 3, 5, 7, 11, 13]
print(findPrimes(19))  # [2, 3, 5, 7, 11, 13, 17, 19]
 
PREVIOUS NEXT
Tagged: #How #find #primes #upperbound
ADD COMMENT
Topic
Name
1+6 =