C program to check if a number is prime or not:
In this post, we will learn how to write a C program to check if a given number is prime or not. The program will take one number as an input from the user and print a message that it is prime or not prime.
What is a Prime number:
A number is called a prime number if the number is greater than 1 and it is divisible by 1 and the number itself. For example, 5, 7, 11 etc. are prime numbers.
We will use a loop to check if the number is divisible by any other number. The loop will start from 2. If it is not divisible by any other number, it is a prime number.
Method 1: C program to check if a number is prime or not:
In this method, we will run one loop to iterate from i to number and on iteration, it will check if the current value of the loop can divide the number or not. If it can divide, it is not a prime number. Else, it will be a prime number.
#include <stdio.h>
int main()
{
int number, isPrime = 1;
printf("Enter a number: ");
scanf("%d", &number);
if (number == 1)
{
isPrime = 0;
}
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
isPrime = 0;
break;
}
}
if (isPrime)
{
printf("%d is a prime number", number);
}
else
{
printf("%d is not a prime number", number);
}
}
Here,
- The integer variable number is used to keep the user-input number. isPrime is another integer variable to hold if the number is prime or not. It will be 1 if the number is prime, else it will be 0.
- Before the loop starts, it checks if the number is 1. If yes, it assigns 0 to isPrime.
- The for loop runs from i = 2 to i = number - 1. On each iteration, it checks if the number is divisible by the current value of i or not. If it is true for any value of i, it assigns 0 to isPrime and exits from the loop as the number is not a prime number.
- Once the loop ends, it checks the value of isPrime and prints one message.
If you run this program, it will print outputs as below:
Enter a number: 1
1 is not a prime number
Enter a number: 2
2 is a prime number
Enter a number: 97
97 is a prime number
Enter a number: 98
98 is not a prime number
Method 2: C program to check if a number is prime or not by iterating to number/2:
We can also iterate to number/2 instead of number. It will reduce the iteration by half. So, let’s change the above program to iterate from 2 to number/2.
#include <stdio.h>
int main()
{
int number, isPrime = 1;
printf("Enter a number: ");
scanf("%d", &number);
if (number == 1)
{
isPrime = 0;
}
for (int i = 2; i <= number/2; i++)
{
if (number % i == 0)
{
isPrime = 0;
break;
}
}
if (isPrime)
{
printf("%d is a prime number", number);
}
else
{
printf("%d is not a prime number", number);
}
}
It will print similar results.
Method 3: C program to check if a number is prime or not by iterating to square root of the number:
We can reduce the number of iterations of the loop even further by iterating to the square root of the number. The math.h header file provides a method called sqrt to find the square root of a number. Let’s use it to write the above program:
#include <stdio.h>
#include <math.h>
int main()
{
int number, isPrime = 1;
printf("Enter a number: ");
scanf("%d", &number);
if (number == 1)
{
isPrime = 0;
}
for (int i = 2; i <= sqrt(number); i++)
{
if (number % i == 0)
{
isPrime = 0;
break;
}
}
if (isPrime)
{
printf("%d is a prime number", number);
}
else
{
printf("%d is not a prime number", number);
}
}
You will get a similar result.
Method 4: C program to check if a number is prime or not by using a separate method:
Let’s use a separate method to check if a number is prime or not. This method will take one number as its parameter and return 1 if it is a prime number or 0 if it is not.
#include <stdio.h>
#include <math.h>
int isPrime(int number)
{
if (number == 1)
{
return 0;
}
for (int i = 2; i <= sqrt(number); i++)
{
if (number % i == 0)
{
return 0;
}
}
return 1;
}
int main()
{
int number;
printf("Enter a number: ");
scanf("%d", &number);
if (isPrime(number))
{
printf("%d is a prime number", number);
}
else
{
printf("%d is not a prime number", number);
}
}
Here,
- isPrime method is used to check if a number is prime or not. It returns 1 if the number is prime. Else, it returns 0.
- If the number is 1, it returns 0, i.e. it is not a prime number.
- The for loop runs from 2 to square root of the number. If the number is divisible by any value in the loop, it returns 0.
- It return 1 if the for loop ends, i.e. the number is not divisible by any number.
It will give similar output.
You might also like:
- 3 different C programs to find the sum of first n odd natural numbers
- 3 different C programs to find the sum of first n even natural numbers
- 4 different ways to print the natural numbers in reverse order in C
- C program to find the first and the last digits of a number
- C program to find the sum of digits of a number
- 2 different C programs to draw a butterfly pattern
- 2 different C programs to find the volume and surface area of a cylinder
- 2 different C programs to print a triangle of prime numbers