Magic Number Program In Java


Problem :

Write a Java program or function which checks whether given number is a magic number or not.

What Is Magic Number?

Magic number is a number which gives sum exactly 1 when its digits are recursively added. For example,

1252 is a magic number. Because, it gives 1 as sum when its digits are recursively added.

1252 -> 1 + 2 + 5 + 2 = 10 -> 1 + 0 = 1

1748 is not a magic number as it doesn’t give 1 as sum when its digits are recursively added.

1748 -> 1 + 7 + 4 + 8 = 20 -> 2 + 0 = 2

Magic Number Program In Java

How To Check Whether Given Number Is Magic Number Or Not?

Step 1 : Let inputNumber be the given number.

Step 2 : Initialize sum to 0.

int sum = 0;

Step 3 : Until we get single digit sum, go on adding digits of inputNumber recursively.

while (sum > 9 || inputNumber > 0)
{
 if (inputNumber == 0)
 {
  inputNumber = sum;
  sum = 0;
 }
 int lastDigit = inputNumber % 10;
 sum = sum + lastDigit;
 inputNumber = inputNumber / 10;
}

Step 4 : If sum is equal to 1, then given number is a magic number.

Magic Number Program In Java :

import java.util.Scanner;

public class JavaMagicNumberProgram 
{
	private static void isMagicNumber(int inputNumber)
	{
		//Copy inputNumber into copyOfInputNumber
		
		int copyOfInputNumber = inputNumber;
		
		//Initialize sum to 0
		
		int sum = 0;
		
		//Until we get single digit sum, add digits of inputNumber recursively.
		
		while (sum > 9 || inputNumber > 0)
		{
			//If inputNumber is 0, 
			//then assign sum to inputNumber and 0 to sum
			
			if (inputNumber == 0)
			{
				inputNumber = sum;
				sum = 0;
			}
			
			//Extracting lastDigit from inputNumber
			
			int lastDigit = inputNumber % 10;
			
			//Adding lastDigit to sum
			
			sum = sum + lastDigit;
			
			//Removing lastDigit from inputNumber
			
			inputNumber = inputNumber / 10;
		}
		
		//If sum is 1, then given inputNumber is a magic number
		
		if (sum == 1)
		{
			System.out.println(copyOfInputNumber+" is a magic number");
		}
		else
		{
			System.out.println(copyOfInputNumber+" is not a magic number");
		}
	}
	
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Enter a number :");
		
		int inputNumber = sc.nextInt();
		
		isMagicNumber(inputNumber);
		
		sc.close();
	}
}

Output_1 :

Enter a number :
1252
1252 is a magic number

Output_2 :

Enter a number :
1748
1748 is not a magic number

Also Read :


Leave a Reply