Spy Number in Java

In this tutorial, we will write java programs to check for Spy Numbers. We will look at two different java programs son Spy Number

  1. Java Program to Check If a Number is Spy number or not.
  2. Java Program to print all the Spy Number within a given Range.

What is Spy Number?

A number is said to be a spy number if the sum of all its digits is equal to the product of all its digits.
Example:

Number: 123 
Sum of its digits: 1+2+3 = 6
Product of its digits: 1*2*3 = 6  
Sum and Product are equal, hence, 123 is a Spy number.

Similarly, you may check for other numbers such as 22, 132, 1124, etc.


Spy Number in Java Program

1. Java Program to Check If a Number is Spy number or not

import java.util.Scanner;

public class SpyNumber
{
   public static void main(String args[])
   {
      int num, product = 1, sum = 0, lastdigit;
      Scanner sc = new Scanner(System.in);

      //read from user
      System.out.print("Enter the number: ");
      num = sc.nextInt();

      int number = num;

      //calculation for sum and product 
      while (num > 0)
      {
         lastdigit = num % 10;

        	//calculating sum
         sum = sum + lastdigit;
        	//calculating product
         product = product * lastdigit;

         num = num / 10;
      }

      //compares the sum and product and print the result
      if (sum == product)
         System.out.println(number + " is a spy number.");
      else
         System.out.println(number + " not a spy number.");
   }
}

Output:

//First Run
Enter the number: 1124
1124 is a spy number.

//Second Run
Enter the number: 166
166 not a spy number.


2. Java Program to print all the Spy Number within a given Range.

We will create a separate Boolean function (isSpyNumber()) that will return true if the sum of the digits and the product of the digits are equal else will return false and print them accordingly.

The program takes the input for the lower range and upper range value and will pass those numbers between this range to the function as an argument.

import java.util.Scanner;

public class SpyNumber
{
   private static boolean isSpyNumber(int number)
   {
      int lastdigit = 0;
      int sum = 0, product = 1;

      //calculation  
      while (number != 0)
      {
         lastdigit = number % 10;

        	//calculating sum
         sum = sum + lastdigit;
        	//calculating product
         product = product * lastdigit;

         number = number / 10;
      }

      //comapre and return true value if found equal  
      if (sum == product)
         return true;

      return false;
   }

   public static void main(String args[])
   {
      int lwRange, upRange;
      Scanner sc = new Scanner(System.in);

      //read from user
      System.out.print("Enter the Lower Range: ");
      lwRange = sc.nextInt();
      System.out.print("Enter the Upper Range: ");
      upRange = sc.nextInt();

      System.out.println("The Spy numbers between " + lwRange + " and " + upRange + " are: ");
      for (int i = lwRange; i <= upRange; i++)
      {
         //calling function at each iteration, that is for each number within the range
         if (isSpyNumber(i))
            System.out.print(i + " ");
      }
   }
}

Output:

Enter the Lower Range: 1
Enter the Upper Range: 1000
The Spy numbers between 1 and 1000 are:
1 2 3 4 5 6 7 8 9 22 123 132 213 231 312 321