This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
algorithms_primes [2018/08/08 14:43] jguerin Added complexity analysis. |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Algorithms: Prime Numbers ====== | ||
- | |||
- | |||
- | ===== Prime Sieves ===== | ||
- | Prime sieves are common devices for generating prime numbers in a given range. These lists can be used for quick verification of relatively small prime numbers (typically ranging up to 10< | ||
- | |||
- | **Etymology: | ||
- | |||
- | ==== Sieve of Eratosthenes ==== | ||
- | <file python sieve.py> | ||
- | def sieve(n): | ||
- | assert n > 1 | ||
- | primes = [True] * (n+1) | ||
- | primes[0] = primes[1] = False | ||
- | for i in range(2, int(sqrt(n))+1): | ||
- | for j in range(i**2, n+1, i): | ||
- | primes[j] = False | ||
- | return [i for i in range(len(primes)) if primes[i]] | ||
- | </ | ||
- | |||
- | === Design and Principles === | ||
- | |||
- | === Analysis === | ||
- | The Sieve of Eratosthenes is not the fastest prime sieve available, but it is quick to code, easy to understand and modify, and sufficiently fast for some practical applications. | ||
- | |||
- | **Time Complexity: | ||
- | **Space Complexity: | ||
- | |||
- | === Benchmarks === | ||
- | This implementation should work reliably for primes up to 10< | ||
- | |||