Learn Python with Challenges
Solve challenges and become a Python expert.
A positive integer greater than 1 which has no other factors except 1 and the number itself is called a prime number. 2, 3, 5, 7 etc. are prime numbers as they do not have any other factors. But 6 is not prime (it is composite) since,
2 x 3 = 6.
Example 1: Using a flag variable
# Program to check if a number is prime or not num = 29 # To take input from the user #num = int(input("Enter a number: ")) # define a flag variable flag = False if num == 1: print(num, "is not a prime number") elif num > 1: # check for factors for i in range(2, num): if (num % i) == 0: # if factor is found, set flag to True flag = True # break out of loop break # check if flag is True if flag: print(num, "is not a prime number") else: print(num, "is a prime number")
29 is a prime number
In this program, we have checked if num is prime or not. Numbers less than or equal to 1 are not prime numbers. Hence, we only proceed if the num is greater than 1.
We check if num is exactly divisible by any number from
num - 1. If we find a factor in that range, the number is not prime, so we set flag to
True and break out of the loop.
Outside the loop, we check if
- If it is
numis not a prime number.
- If it is
numis a prime number.
Note: We can improve our program by decreasing the range of numbers where we look for factors.
In the above program, our search range is from 2 to
num - 1.
We could have used the range,
range(2,math.floor(math.sqrt(num)+1)). The latter range is based on the fact that a composite number must have a factor less than or equal to the square root of that number. Otherwise, the number is prime.
You can change the value of variable num in the above source code to check whether a number is prime or not for other integers.
In Python, we can also use the
for...else statement to do this task without using an additional
Example 2: Using a for...else statement
num = 407 # To take input from the user #num = int(input("Enter a number: ")) if num == 1: print(num, "is not a prime number") elif num > 1: # check for factors for i in range(2,num): if (num % i) == 0: print(num,"is not a prime number") print(i,"times",num//i,"is",num) break else: print(num,"is a prime number") # if input number is less than # or equal to 1, it is not prime else: print(num,"is not a prime number")
407 is not a prime number 11 times 37 is 407
Here, we have used a
for..else statement to check if
num is prime.
It works on the logic that the
else clause of the
for loop runs if and only if we don't break out the
for loop. That condition is met only when no factors are found, which means that the given number is prime.
So, in the
else clause, we print that the number is prime.