368 http://inventwithpython.com/hacking
Email questions to the author: [email protected]
it is larger than 7.071, the square root of 50). We can do this because all the multiples of 9, 10,
11, and so on will already have been marked.
The completed sieve looks like this:
Table 23-3. A completed sieve of Eratosthenes.
Not
Prime
1Prime
2Prime
3Not
Prime
4Prime
5Not
Prime
6Prime
7Not
Prime
8Not
Prime
9Not
Prime
10Prime
11Not
Prime
12Prime
13Not
Prime
14Not
Prime
15Not
Prime
16Prime
17Not
Prime
18Prime
19Not
Prime
20
Not
Prime
21Not
Prime
22Prime
23Not
Prime
24Not
Prime
25Not
Prime
26Not
Prime
27Not
Prime
28Prime
29Not
Prime
30Prime
31Not
Prime
32Not
Prime
33Not
Prime
34Not
Prime
35Not
Prime
36Prime
37Not
Prime
38Not
Prime
39Not
Prime
40Prime
41Not
Prime
42Prime
43Not
Prime
44Not
Prime
45Not
Prime
46Prime
47Not
Prime
48Not
Prime
49Not
Prime
50By using the sieve of Erastothenes, we’ve calculated that the prime numbers under 50 are 2, 3, 5,
7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, and 47. This sieve algorithm is good when we want to
quickly find out all the prime numbers in a certain range of numbers. It is much faster than using
the previous “divides test” algorithm to test if 2 is prime, then test if 3 is prime, then test if 4 is
prime, and so on.
The primeSieve() Function...............................................................................................................................
- def primeSieve(sieveSize):
Returns a list of prime numbers calculated using
the Sieve of Eratosthenes algorithm.
- sieve = [True] * sieveSize
- sieve[0] = False # zero and one are not prime numbers
- sieve[1] = False
The primeSieve() function returns a list of all prime numbers between 1 and sieveSize.
First, line 27 creates a list of Boolean True values that is the length of sieveSize. The 0 and
1 indexes are marked as False because 0 and 1 are not prime numbers.