# Peterson Number in Java

In this section, we will learn what is Peterson number and how can we check whether a given number is Peterson or not through a Java program.

## Peterson Number

A number is said to be Peterson if the sum of factorials of each digit is equal to the sum of the number itself.

### Steps to Find Peterson Number

• Read or initialize a number (n).
• Find the last digit (d) of the given number.
• Find the factorial (fact) of the digit.
• Add the factorial (fact) to a variable
• Repeat steps 2 to 4 until the given number becomes 0.
• Compare the sum with n. If both are equal, the given number is Peterson, else not.

### Example of Peterson Number

Suppose, we have to check the number (n) 145 is Peterson or not.

Number = 145

145 = !1 + !4 + !5

=1+4*3*2*1+5*4*3*2*1

=1+24+120

145=145

We observe that the number and the sum of factorials of digits are equal to the number itself. Hence, 145 is a Peterson number.

Let’s implement the above logic in a Java program.

## Peterson Number Java Program

In the following program, we have taken an array of factorial to quickly find the factorial. You can use the logic also.

PetersonNumberExample.java

1. import java.io.*;
2. import java.util.*;
3. public class PetersonNumberExample1
4. {
5. //an array is defined for the quickly find the factorial
6. static long[] factorial = new int[] { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600};
7. //driver code
8. public static void main(String args[])
9. {
10. //constructor of the Scanner class
11. Scanner sc = new Scanner(System.in);
12. System.out.print(“Enter a number to check: “);
13. //reading a number from the user
14. int n=sc.nextInt();
15. //calling the user-defined function to check Peterson number
16. if (isPeterson(n))
17. System.out.println(“The given number is a Peterson number.”);
18. else
19. System.out.println(“The given number is not a Peterson number.”);
20. }
21. //function to check the given number is Peterson or not
22. static boolean isPeterson(int n)
23. {
24. int num = n;
25. int sum = 0;
26. //loop executes until the condition becomes false
27. while (n > 0)
28. {
29. //determines the last digit of the given number
30. int digit = n % 10;
31. //determines the factorial of the digit and add it to the variable sum
32. sum += factorial[digit];
33. //removes the last digit of the given number
34. n = n / 10;
35. }
36. //compares sum with num if they are equal returns the number itself
37. return (sum == num);
38. }
39. }

Output 1:

```Enter a number to check: 145
The given number is a Peterson number.
```

Output 2:

```Enter a number to check: 773
The given number is not a Peterson number.```