Prime Numbers: A Comprehensive Guide with Python Code Examples

Prime numbers are a fundamental concept in mathematics and computer science. These are positive integers greater than 1 that are divisible only by 1 and themselves. In other words, they can not be divided evenly by any number other than 1 and the number itself. Understanding and working with prime numbers is crucial in various fields, including cryptography, coding theory, and number theory.

In this article, we will explore the concept of prime numbers in detail and demonstrate how to print all the prime numbers from 1 to 100 using Python. We will also discuss various techniques for checking the primality of a number, including the brute force method, the Sieve of Eratosthenes, and the Fermat primality test.

Printing Prime Numbers from 1 to 100 using Brute Force

The brute force method, as the name suggests, is a straightforward approach to finding prime numbers. It involves checking every number up to n to see if it is divisible by any number other than 1 and itself. If it isn't, then it's considered a prime number. The following code implements this method to print all the prime numbers from 1 to 100.

```
def is_prime(n):
if n <= 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True
for i in range(1, 101):
if is_prime(i):
print(i)
```

Output:

```
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
```

The above code defines a function `is_prime`

that takes an integer as an input and returns a Boolean value indicating whether it's a prime number or not. The function starts by checking if the number is less than or equal to 1, in which case it returns False. If the number is greater than 1, the function iterates through every integer from 2 to n-1 and checks if n is divisible by any of these numbers. If it is, then the function returns False. If none of the numbers divide n, then the function returns True, indicating that n is a prime number.

The second part of the code uses the `is_prime`

function to print all the prime numbers from 1 to 100.

Printing Prime Numbers from 1 to 100 using the Sieve of Eratosthenes

The Sieve of Eratosthenes is an efficient algorithm for finding all the prime numbers up to a given limit. The idea behind this algorithm is to generate a list of all the numbers from 2 to n and mark the multiples of each prime number as composite. The following code implements this algorithm to print all the prime numbers from 1 to 100.

```
def sieve_of_eratosthenes(n):
prime = [True for i in range(n+1)]
p = 2
while (p * p <= n):
if (prime[p] == True):
for i in range(p * p, n+1, p):
prime[i] = False
p += 1
prime[0] = False
prime[1] = False
for p in range(2, n):
if prime[p]:
print(p)
sieve_of_er
Printing Prime Numbers from 1 to 100 using the Fermat Primality Test
The Fermat primality test is another efficient algorithm for determining the primality of a number. The idea behind this algorithm is based on Fermat's Little Theorem, which states that if n is a prime number and a is an integer such that 1 < a < n, then a^(n-1) ≡ 1 (mod n). The Fermat primality test checks if this condition holds true for several randomly selected values of a. If the condition holds true for all the selected values of a, then it is highly likely that the number is a prime.
The following code implements the Fermat primality test to print all the prime numbers from 1 to 100.
```

import random

def power(a, n, p):

res = 1

a = a % p

while (n > 0):

if (n & 1):

res = (res * a) % p

n = n >> 1

a = (a * a) % p

return res

def is_probably_prime(n, k):

if (n <= 1 or n == 4):

return False

if (n <= 3):

return True

while (k > 0):

a = 2 + random.randint(1, n – 4)

x = power(a, n – 1, n)

if (x != 1):

return False

k -= 1

return True

for i in range(1, 101):

if is_probably_prime(i, 10):

print(i)

```
Output:
```

2

3

5

7

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

```
The code above defines two functions `power` and `is_probably_prime`. The `power` function calculates (a^n) % p efficiently using binary exponentiation. The `is_probably_prime` function takes an integer n and a positive integer k as input and returns a Boolean value indicating whether n is a prime number or not. The function first checks if n is less than or equal to 1 or equal to 4, in which case it returns False. If n is less than or equal to 3, the function returns True. Otherwise, the function selects k random values of a between 2 and n-2 and checks if the Fermat condition holds true for each of these values. If the condition holds true for all the selected values of a, the function returns True.
The second part of the code uses the `is_probably_prime` function to print all the prime numbers from 1 to 100.
Conclusion
In this article, we explored the concept of prime numbers and discussed three different algorithms for checking the primality of a number in Python. We demonstrated how to print all the prime numbers from 1 to 100 using the brute force method, the Sieve of Eratosthenes, and the Fermat primality test.
It's essential to understand the difference between these algorithms in terms of their time and space complexity, accuracy, and suitability for different scenarios. The brute force method is simple and straightforward, but it's not efficient for large values of n. The Sieve of Eratosthenes is an efficient algorithm for finding all the prime numbers up to a given limit, but it requires a
## Popular questions
1. What is a prime number?
A prime number is a positive integer greater than 1 that is only divisible by 1 and itself. In other words, a prime number has only two positive divisors, 1 and itself.
2. What is the brute force method for checking the primality of a number in Python?
The brute force method for checking the primality of a number in Python involves checking all the positive integers less than or equal to the square root of the number and dividing the number by each of these integers. If the number is not divisible by any of these integers, then it is a prime number.
3. What is the Sieve of Eratosthenes?
The Sieve of Eratosthenes is an algorithm for finding all the prime numbers up to a given limit. It starts by marking all the numbers from 2 to the given limit as prime and then iteratively removes all the multiples of the primes found so far, until only primes are left.
4. What is the Fermat primality test?
The Fermat primality test is another efficient algorithm for determining the primality of a number. The idea behind this algorithm is based on Fermat's Little Theorem, which states that if n is a prime number and a is an integer such that 1 < a < n, then a^(n-1) ≡ 1 (mod n). The Fermat primality test checks if this condition holds true for several randomly selected values of a.
5. How to print all the prime numbers from 1 to 100 in Python using the Fermat primality test?
The following code implements the Fermat primality test to print all the prime numbers from 1 to 100:
```

import random

def power(a, n, p):

res = 1

a = a % p

while (n > 0):

if (n & 1):

res = (res * a) % p

n = n >> 1

a = (a * a) % p

return res

def is_probably_prime(n, k):

if (n <= 1 or n == 4):

return False

if (n <= 3):

return True

while (k > 0):

a = 2 + random.randint(1, n – 4)

x = power(a, n – 1, n)

if (x != 1):

return False

k -= 1

return True

for i in range(1, 101):

if is_probably_prime(i, 10):

print(i)

```
Output:
```

2

3

5

7

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

```
### Tag
Primality.
```