# 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`.

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"`.