Read Also : Java Program to Check Bouncy Number
What is Magic Number
A Magic number is a number whose sum of its digits are calculated till a single digit is obtained by recursively adding the sum of its digits. If single digit obtained is 1, then the number is magic number, otherwise not.Examples :
Number to check : 19
1 + 9 = 10 // 10 is not a single digit number, continue adding digits
1 + 0 = 1 // 19 is a Magic number
Number to check : 1891
1 + 8 + 9 + 1 = 19 // 19 is not a single digit number, continue adding digits
1 + 9 = 10 // 10 is not a single digit number, continue adding digits
1 + 0 = 1 // 1891 is a Magic number
Below are examples of numbers which are NOT Magic numbers
Number to check : 29
2 + 9 = 11 // 11 is not a single digit number, continue adding digits
1 + 1 = 2 // 29 is NOT a Magic number
Number to check : 2888
2 + 8 + 8 + 8 = 26// 26 is not a single digit number, continue adding digits
2 + 6 = 8 // 2888 is NOT a Magic number
Java Program for Magic Number
import java.util.*; public class JavaHungry { public static void main(String args[]) { System.out.println("Enter any number : "); Scanner scan = new Scanner(System.in); int inputNumber = scan.nextInt(); boolean result = checkMagicNumber(inputNumber); if(result) System.out.println(inputNumber +" is a Magic Number"); else System.out.println(inputNumber +" is NOT a Magic Number"); } public static boolean checkMagicNumber(int inputNumber) {
// Initialize sumOfDigits of inputNumber
int sumOfDigits = 0;
// Create a copy of the inputNumber int number = inputNumber;
while( sumOfDigits > 9 || number > 0) { /* if number is zero and sumOfDigits is non-zero then the loop will continue. Loop will stop when number is zero and sumOfDigits becomes a single digit */ if (number == 0) { number = sumOfDigits; sumOfDigits = 0; } sumOfDigits = sumOfDigits + (number % 10); number = number / 10; }
/* If sumOfDigits is equal to 1 then the number is Magic number, otherwise not */
return (sumOfDigits == 1); } }
Output :
Enter any number : 145
145 is a Magic number
2. Another way of checking whether a given number is Magic number or not is given below.
import java.util.*; public class JavaHungry { public static void main(String args[]) { System.out.println("Enter any number : "); Scanner scan = new Scanner(System.in); int inputNumber = scan.nextInt(); if(inputNumber % 9 == 1) System.out.println(inputNumber +" is a Magic Number"); else System.out.println(inputNumber +" is NOT a Magic Number"); } }
Output :
Enter any number : 226
226 is a Magic number
List of Magic numbers from 1 to 100 are :
1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, 100
Algorithm for Magic Number
1. Initialize sumOfDigits variable value to 0. It will represent the sum of digits of a given inputNumber.2. Create a copy of the inputNumber (original number) by storing its value in variable number.
3. Using while loop
a. Continue the loop till the sumOfDigits does not become a single digit or number is not equal to zero.
b. Get the rightmost digit of variable number by using (number % 10) and add its value to the variable sumOf Digits.
4. Check whether the variable sumOfDigits is equal to 1.
a. If both are equal then the inputNumber is Magic number.
b. Otherwise, the inputNumber is not a Magic number.
That's all for the day, please mention in comments if you know any other way to implement Magic number program in java.