Java Program to Check Strong Number

A strong number is a number in which the sum of the factorials of its digits is equal to the number itself.

For example, 145 is a strong number because 1! + 4! + 5! = 145.

1. Understanding the Problem

Determine whether a given number is a strong number.

Number: 145 → Strong
Number: 2 → Strong
Number: 123 → Not Strong

2. Using Basic Loop

Java
Check strong number using loop and factorial
import java.util.Scanner;

public class StrongNumber {

    static int factorial(int n) {
        int fact = 1;
        for (int i = 1; i <= n; i++) {
            fact *= i;
        }
        return fact;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int num = sc.nextInt();

        int original = num;
        int sum = 0;

        while (num != 0) {
            int digit = num % 10;
            sum += factorial(digit);
            num /= 10;
        }

        if (sum == original)
            System.out.println("Strong Number");
        else
            System.out.println("Not a Strong Number");
    }
}

3. Optimized Approach

Java
Check strong number using precomputed factorials
import java.util.Scanner;

public class StrongOptimized {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter a number: ");
        int num = sc.nextInt();

        int[] fact = {1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880};

        int original = num;
        int sum = 0;

        while (num != 0) {
            int digit = num % 10;
            sum += fact[digit];
            num /= 10;
        }

        if (sum == original)
            System.out.println("Strong Number");
        else
            System.out.println("Not a Strong Number");
    }
}

4. Common Mistakes

1. Incorrect factorial calculation.

2. Forgetting to reset factorial for each digit.

3. Not storing the original number.

4. Misunderstanding digit extraction logic.

5. Applications

1. Helps in understanding factorial and digit-based problems.

2. Useful for practicing loops and functions.

3. Common in coding interviews and academic exercises.

Conclusion

Strong number programs combine factorial logic with digit manipulation.

Using precomputed factorials improves efficiency significantly.