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
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 :
- Anagram Program In Java
- Palindrome Program In Java
- Prime Number Program In Java
- Symmetric Matrix Program In Java
- Disarium Number Program In Java
- Pronic Number Program In Java
- Number Pattern Programs In Java
- Binary Number Program In Java
- Harshad Number Program In Java
- Spiral Matrix Program In Java
- Armstrong Number Program In Java
- Find Missing Number In An Array
- Magic Number Wiki Reference