Hacking Secret Ciphers with Python

(Ann) #1

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
1

Prime
2

Prime
3

Not
Prime
4

Prime
5

Not
Prime
6

Prime
7

Not
Prime
8

Not
Prime
9

Not
Prime
10

Prime
11

Not
Prime
12

Prime
13

Not
Prime
14

Not
Prime
15

Not
Prime
16

Prime
17

Not
Prime
18

Prime
19

Not
Prime
20
Not
Prime
21

Not
Prime
22

Prime
23

Not
Prime
24

Not
Prime
25

Not
Prime
26

Not
Prime
27

Not
Prime
28

Prime
29

Not
Prime
30

Prime
31

Not
Prime
32

Not
Prime
33

Not
Prime
34

Not
Prime
35

Not
Prime
36

Prime
37

Not
Prime
38

Not
Prime
39

Not
Prime
40

Prime
41

Not
Prime
42

Prime
43

Not
Prime
44

Not
Prime
45

Not
Prime
46

Prime
47

Not
Prime
48

Not
Prime
49

Not
Prime
50

By 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...............................................................................................................................



  1. def primeSieve(sieveSize):


  2. Returns a list of prime numbers calculated using




  3. the Sieve of Eratosthenes algorithm.





  4. sieve = [True] * sieveSize

  5. sieve[0] = False # zero and one are not prime numbers

  6. 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.

Free download pdf