Answer:
The c++ program to check prime numbers is shown below.
#include <iostream>
using namespace std;
bool isPrime(int n);
bool isPrime(int n)
{
bool prime;
int p=0;
if(n==2 || n==3)
prime = true;
else if(n%2 == 0)
prime = false;
else
{
for(int k=3; k<n/2; k++)
{
if(n%k == 0)
p++;
}
if(p>1)
prime = false;
else
prime = true;
}
return prime;
}
int main() {
int num;
do
{
cout<<"Enter a positive number."<<endl;
cin>>num;
if(num<1)
{
cout<<"Invalid number. Enter a positive number"<<endl;
cin>>num;
}
}while(num<2);
cout<<"The "<<num<<" is prime. "<<isPrime(num)<<endl;
}
OUTPUT
Enter a positive number.
-4
Invalid number. Enter a positive number
0
Enter a positive number.
101
The 101 is prime. 1
Explanation:
The user input is validated for positivity. A do while loop along with if statement is implemented for verification.
do
{
cout<<"Enter a positive number."<<endl;
cin>>num;
if(num<1)
{
cout<<"Invalid number. Enter a positive number"<<endl;
cin>>num;
}
}while(num<1);
The test for prime number is done by using multiple if else statements and a Boolean variable prime is used.
If user inputs 2 or 3, variable prime is set to true.
Else If user inputs an even number, variable prime is set to false. This is done by taking modulo of the number upon division by 2.
Else if user inputs neither an even number nor a number less than 3, the modulus of the number is taken with divisors beginning from 3 up to half of the input number. Here, an integer variable p is used and based on its value, variable prime is set to true or false.
For this, an integer variable p is initialized to 0. A number can be completely divisible by itself or by its factors.
If the number is divisible by any of the divisors, value of variable p is increased by 1. If value of p is greater than 1, this means that the user input is divisible by more than one divisor. Hence, the given number is not a prime number and the variable prime is set to false. Otherwise prime will be set to true.
The value 1 indicates true and 0 indicates false.