In this section, we are going to learn about the magic number in Java and also how to find magic numbers in java.

What is Magic Number?

A number is said to be a magic number if the sum of its digits is calculated till a single digit is obtained by recursively adding the sum of its digits. And the single-digit which is obtained at the end must be 1, then the number is a magic number, otherwise, it is not a magic number.

Example: 1729 is a magic number.

Explanation:
1+7+2+9 = 19, the sum of the digit is 19, again
1+9 = 10
1+0 = 1, Therefore after the addition of digits, the last number we got is 1. Hence 1729 is a Magic Number.


Magic Number in Java

Let us see an example in java to check whether the number is a magic number or not. We will use a nested while loop in Java.

import java.util.Scanner;

public class MagicNumberProgram
{
   public static void main(String[] args)
   {
      int num, rem = 1, temp, sum = 0;
      Scanner sc = new Scanner(System.in);
      System.out.print("Enter number: ");
      num = sc.nextInt();
      temp = num;

      //checking the condition with nested while loop
      while (temp > 9)
      {
         while (temp > 0)
         {
            rem = temp % 10;
            sum = sum + rem;
            temp = temp / 10;
         }

         temp = sum;
         sum = 0;
      }

      if (temp == 1)
      {
         System.out.println(num + " is a Magic Number");
      }
      else
      {
         System.out.println(num + " is not Magic Number");
      }
   }
}

Output:

//Run: 1
Enter number: 1729
1729 is a Magic Number

//Run: 2 Enter number: 123
123 is not Magic Number

You can also create a separate Boolean function and return true or false to the main function after checking the number for magic in Java.