In this python program, we will find whether a number is prime or not. Here we will use the **if-else statement** once again and the new thing we are going to use is **for loop**.

Here we take the **modulus(%)** of the **given number(num variable)** with **every number(i variable)** less than the **num**. And if the remainder shows 0 i.e the **variable num** is divided by the **variable i** without leaving any remainder then the **variable i** is the factor of the **variable num** and hence it prints the **variable num** is not a **prime number** and then breaks from the for loop because there is no need to check for **other numbers(variable i)**. And if none of the numbers between the range is the factor of the **variable num** then it is a prime number.

### Code:

Every statement is explained with use of comments.

# taking input from user
num = int(input("Enter a number: "))
# the prime no. are greater than 1
if num > 1:
# going through every number btw 2 and num-1
for i in range(2,num):
# checking the num is divisible by i.
if num % i == 0:
# prints num is not a prime number
print(num,"is not a prime number.")
break
else:
# prints num is a prime number
print(num,"is a prime number.")
else:
print(num,"is not prime number.")

### Output:-

Enter a number: 15

15 is not a prime number.

### Optimized prime number program

We are checking whether the num variable is divisible by any number between **2 and num-1**. We can optimize it and check for only those numbers which are between** 2 and num/2**.

Hence, we just need change one statement in the program. We have to change the parameters passed inside the range function.

for i in range(2,num//2):

This way we don't have to check for unnecessary numbers.

We can optimize this program some more by taking the numbers between **2 and the square root of num (sqrt(num))**. This is because a composite number(not prime) must have a factor less than the square root of that number otherwise the number is prime.

Again, we have to change the parameters passed inside the range function.

for i in range(2,math.floor(math.sqrt(num))+1):

To use the **floor()** and **sqrt()** function we have to import the math package.

import math

Now, we know how to check whether a number is prime or not. We can use this program to print all prime numbers in an Interval.