C++ Program to Check Whether a Number is Prime or Not

To understand this example, you should have the knowledge of the following C++ programming topics:


A positive integer which is only divisible by 1 and itself is known as prime number.

For example: 13 is a prime number because it is only divisible by 1 and 13 but, 15 is not prime number because it is divisible by 1, 3, 5 and 15.

Note: 0 and 1 are not prime numbers.


Example: Check Prime Number

#include <iostream>
using namespace std;

int main() {

  int i, n;
  bool is_prime = true;

  cout << "Enter a positive integer: ";
  cin >> n;

  // 0 and 1 are not prime numbers
  if (n == 0 || n == 1) {
    is_prime = false;
  }

  // loop to check if n is prime
  for (i = 2; i <= n/2; ++i) {
    if (n % i == 0) {
      is_prime = false;
      break;
    }
  }

  if (is_prime)
    cout << n << " is a prime number";
  else
    cout << n << " is not a prime number";

  return 0;
}

Output

Enter a positive integer: 29
29 is a prime number

This program takes a positive integer from the user and stores it in the variable n.

Notice that the boolean variable is_prime is initialized to true at the beginning of the program.

Since 0 and 1 are not prime numbers, we first check if the input number is one of those numbers or not. If the input number is either 0 or 1, then the value of is_prime is set to false.

Else, the initial value of is_prime is left unchanged. Then, the for loop is executed, which checks whether the number entered by the user is perfectly divisible by i or not.


for (i = 2; i <= n/2; ++i) {
  if (n % i == 0) {
    is_prime = false;
    break;
  }
}

The for loop runs from i == 2 to i <= n/2 and increases the value of i by 1 with each iteration.

The loop terminates at i == n/2 because we cannot find any factor for n beyond the number n/2 . So, any iteration beyond n/2 is redundant.

If the number entered by the user is perfectly divisible by i, then is_prime is set to false and the number will not be a prime number.

But if the input number is not perfectly divisible by i throughout the entirety of the loop, then it means that the input number is only divisible by 1 and that number itself.

So, the given number is a prime number.

In the cases of n == 2 and n == 3, the for loop fails to run and the value of is_prime remains true.


Also Read:

Before we wrap up, let's put your understanding of this example to the test! Can you solve the following challenge?

Challenge:

Write a function to check if a number is prime or not.

  • If the number is prime, return "It's a prime number". Otherwise, return "It's not a prime number".
  • A number is prime if it has only two distinct divisors: 1 and itself.
  • For example, if num = 7, the output should be "It's a prime number".
Did you find this article helpful?

Your builder path starts here. Builders don't just know how to code, they create solutions that matter.

Escape tutorial hell and ship real projects.

Try Programiz PRO
  • Real-World Projects
  • On-Demand Learning
  • AI Mentor
  • Builder Community