Fascinating Number in Java
What is a Fascinating Number?
Fascinating numbers are 3 digit numbers with a unique property. When a 3 digit number is concatenated with the number multiplied by 2 and the number multiplied by 3, sometimes we get a number which contains all the digits from 1 to 9 exactly once. There could be any number of zeros, but they are ignored. Such a 3 digit number is known as a fascinating number.
Let us look at an example. Consider the number 273. Following are the multiples of 2 and 3 of the number 273.
- 1 x 273 = 273
- 2 x 273 = 546
- 3 x 273 = 819
Concatenating all the numbers, we get the final number 273546819. This is a fascinating number since it contains all the digits 1 to 9 exactly once!
Problem: Find whether a given number is a fascinating number using Java
The following Java program checks whether a given 3 digit number is a fascinating number. The Java program concatenates the given number with its multiples of 2 and 3. Then it checks whether the resulting number contains 1 to 9 exactly once. There could be any number of zeros and they are ignored.
import java.util.Scanner; // Java program to check for fascinating numbers public class CheckFascinatingNumber { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Please enter a 3 digit number: "); int number = scanner.nextInt(); if (number < 100 || number > 999) { System.out.println(number + " is not a valid 3 digit number!"); } else { if (isFascinatingNumber(number)) { System.out.println(number + " is a fascinating number!"); } else { System.out.println(number + " is NOT a fascinating number!"); } } scanner.close(); } // Checks whether the input number is a fascinating number public static boolean isFascinatingNumber(int input) { String sVal = "" + input + input * 2 + input * 3; // check existence of 1 to 9 exactly once! for (int i = 1; i <= 9; i++) { int pos = sVal.indexOf(i + ""); // is digit missing? if (pos < 0) { return false; } else { // Is there a duplicate digit? if (sVal.substring(pos+1).indexOf(i + "") >= 0) { return false; } } } System.out.println(sVal); return true; } }
Following is the sample output from the above program,
java CheckFascinatingNumber Please enter a 3 digit number: 273 273546819 273 is a fascinating number!
Problem: Find all fascinating numbers using Java
The following Java program uses the logic written in the above program to find all 3 digit fascinating numbers. The program iterates from 100 to 999 looking for fascinating numbers.
// Java example source code for fascinating number // Generates all 3 digit fascinating numbers using Java public class FascinatingNumberGenerator { public static void main(String[] args) { System.out.println("Generating all 3 digit fascinating numbers!"); for(int i=100;i<=999;i++) { if(isFascinatingNumber(i)) { System.out.print(i+", "); } } } // Checks whether the input number is a fascinating number public static boolean isFascinatingNumber(int input) { String sVal = "" + input + input * 2 + input * 3; // check existence of 1 to 9 exactly once! for (int i = 1; i <= 9; i++) { int pos = sVal.indexOf(i + ""); // is digit missing? if (pos < 0) { return false; } else { // Is there a duplicate digit? if (sVal.substring(pos+1).indexOf(i + "") >= 0) { return false; } } } return true; } }
Following is the output of the above program. It shows that there are exactly four 3 digit fascinating numbers!
java FascinatingNumberGenerator Generating all 3 digit fascinating numbers! 192, 219, 273, 327,