# 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,```