## C++ program to check if a number is spy number or not:

In this *C++* program, we will learn how to check if a number is a spy number or not. A number is called a *spy number* if the sum of the digits of the number is equal to the product of the digits. The program will take a number as an input from the user and check if the number is a *spy number* or not.

For example, *132* is a *spy number*. Because the sum of the digits of this number is *1 + 3 + 2 = 6* and the product of the digits of this number is *1 * 3 * 2 = 6*. Both are equal.

### Algorithm:

We will use the below algorithm:

- Take the number as input from the user and save it to a variable.
- Initialize one variable as
*0*to hold the*sum of digits*of the number. Initialize one more variable as*1*to hold the*product of digits*of the number. - Run one loop till the number is
*greater than 0*.- On each iteration, get the last digit of the number by using modulo. Add this digit to the sum variable and multiply it to the product variable.
- Remove the last digit of the number by dividing it by
*10*.

- Once the loop ends, compare the
*sum*variable with the*product*variable. If both are equal, this is a*spy number*. Else, it is not.

### Example 1: C++ program to check if a number is spy number or not:

The below program checks if a number is *spy number* or not:

```
#include <iostream>
using namespace std;
int main()
{
int num, sum = 0, product = 1, lastDigit;
cout << "Enter a number: " << endl;
cin >> num;
while (num > 0)
{
lastDigit = num % 10;
sum += lastDigit;
product *= lastDigit;
num /= 10;
}
if (sum == product)
{
cout << "It is a spy number !!" << endl;
}
else
{
cout << "It is not a spy number !!" << endl;
}
}
```

Here,

- Four integer variables are created in the beginning of the program. The variable
*num*is used to store the number,*sum*is used to store the sum of digits of the number,*product*is used to store the product of the digits of the number, and*lastDigit*is used to store the last digit of the number. - It asks the user to enter the number. This is assigned to the
*num*varable. - The
*while loop*finds the sum and products of the digits of the number.- On each iteration, it finds the last digit of the number and adds it to the
*sum*variable. Also, it multiplies it to the*product*variable. - At the end of each iteration, it removes the last digit of the number.

- On each iteration, it finds the last digit of the number and adds it to the
- Once the while loop ends, it compares the values of
*sum*and*product*and prints one message.

If you run this program, it will print output as like below:

```
Enter a number:
132
It is a spy number !!
Enter a number:
133
It is not a spy number !!
```

### Example 2: C++ program to check if a number is spy number or not by using a separate function:

Letâ€™s use a separate function to find out if a number is *spy* number or not. This function will take one number as the parameter and return one *boolean* value.

```
#include <iostream>
using namespace std;
bool isSpy(int num)
{
int sum = 0, product = 1, lastDigit;
while (num > 0)
{
lastDigit = num % 10;
sum += lastDigit;
product *= lastDigit;
num /= 10;
}
return sum == product;
}
int main()
{
int num;
cout << "Enter a number: " << endl;
cin >> num;
if (isSpy(num))
{
cout << "It is a spy number !!" << endl;
}
else
{
cout << "It is not a spy number !!" << endl;
}
}
```

*isSpy*is a separate function to check if a number is spy or not. It takes one number as the parameter and returns one boolean value: **true*if the number is spy and*false*otherwise.*isSpy*is using the same process similar to the previous example to check if the provided number is spy or not.- It returns one boolean value and based on it, the
*if-else*block in the main method prints a message.

It will print similar output.

```
Enter a number:
133
It is not a spy number !!
Enter a number:
1412
It is a spy number !!
```

### You might also like:

- C++ STL accumulate method explanation with example
- C++ program to convert hexadecimal to decimal
- C++ program to find the sum of the first and last digits of a number
- C++ program to find all prime numbers to n using sieve of Eratosthenes algorithm
- C++ program to print all subsets of a set
- How to sort an array in ascending order in C++
- C++ program to solve a quadratic equation in different ways
- 3 ways to find the exponent without using pow() method in C++
- 3 different C++ programs to find electricity bill with user given units