A prime number (or a prime) is a natural number greater than 1 that is not a product of two smaller natural numbers. An another way to define prime number is: a prime number is a natural number that has no positive divisors other than 1 and itself. Following are some prime numbers:
2,3,5,11,17……
We’ll write a program to check whether the given number is prime or not.
Method 1
To check whether a given number is prime or not, we need to check whether the number has a positive divisor or not other than 1. To check for a given number n, it is sufficient to check whether n is divisible between n and n/2. This is because it is not possible for n to have a divisor greater than n/2.
# Python program to check if a given number is prime or not
number = int(input('Please input a number:'))
# Check if the number is positive number greater than 1
if number > 1:
# Iterate from 2 to n / 2
for i in range(2, number//2):
# If number is divisible by any number between
# 2 and n / 2, it is not prime
if (number % i) == 0:
print(number, "is not a prime number")
break
else:
print(number, "is a prime number")
else:
print(number, "is not a prime number")
Output
Please input a number:13
13 is a prime number
Method 2 (Optimized method)
The optimized solution is based on the fact that all prime numbers are of the form 6k±1 with the exception of 2 and 3. All integers can be expressed in the form of 6k+i for some integer k and i=0,1,2,3 or 4. So we have following representation of numbers:
(6k+0), (6k+1), (6k+2), (6k+3) and (6k+4)
Here, (6k+0), (6k+2) and (6k+4) are divisible by 2 and (6k+3) is divisible by 3.
So the optimized solution is to check if the number n is divisible by 2 or 3 and check for the number of the form 6k+1.
# Python3 - Optimized program to check
# if a number is prime or not
def isPrime(number):
# check if number is less than equal to 1
if (number <= 1):
return False
# check if number is less than equal to 3
if (number <= 3):
return True
# If number is divisible by 2 or 3 it is not prime
if (number % 2 == 0 or number % 3 == 0):
return False
i = 5
while(i * i <= number):
if (number % i == 0 or number % (i + 2) == 0):
return False
i = i + 6
return True
num = int(input('Please provide number to check:'))
if (isPrime(num)):
print(num, "is a prime number")
else:
print(num, "is not a prime number")
Output
Please provide number to check:11
11 is a prime number
