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

Example to check whether an integer (entered by the user) is a prime number or not using for loop and if...else statement.

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.

Did you find this article helpful?