Home >Java >javaTutorial >Special Number in Java
Special Numbers in Java are ones whose sum of factorials of digits is equal to the number itself. It can be an N digit number. The program has first to break the number into its corresponding digits and calculate their factorials. Once that is done, the sum of the individual calculated factorials should be added. If the sum matches the original number, then the number is called to be a Special number. When the program is running, the digits and their factorials are calculated using a modulus concept and Math.fact(), which calculates each number’s factorial. In this article, we are going to check up till 4 digit numbers which are Special Numbers or not.
Start Your Free Software Development Course
Web development, programming languages, Software testing & others
Mathematically, we have to show how the sum of factorials of individual digits of a number matches the original number. One such example of a number is 145.
145= 1! +4! +5!
In this article, we will also be going to see them working and other such Special numbers, which can be either 2 or 3 digit numbers. Java has many platforms on which this program can be run. In this article, we are going to check the working of the program on the BlueJ platform. There are four special numbers which are present which are known to us. 1,2, 145 and 40585.
In this program, we are going to enter a number and check if the number is Special or not. We indirectly check the sum of factorials of the digits as equal to the original number.
Code:
//Java program to check if a number // is a special number import java.util.*; import java.io.*; class Special { // function to calculate the factorial // of any number using while loop static int factorial(int n) { int fact = 1; while (n != 0) { fact = fact * n; n--; } return fact; } // function to Check if number is Special static boolean isSpecial(int n) { int sum = 0; int t = n; while (t != 0) { // calculate factorial of last digit // of temp and add it to sum sum += factorial(t % 10); // replace value of t by t/10 t = t / 10; } // Check if number is Special return (sum == n); } // Driver code public static void main(String[] args)throws IOException { BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter the number to check if it is Special"); int n = Integer.parseInt(br.readLine()); if (isSpecial(n)) System.out.println("YES- The number is a special number"); else System.out.println("NO- The number is not a special number"); } }
Now, we are going to check 145 as the number and 40585 as the other number. Using this piece of code, we are going to check the numbers 145, 1 and 2. With the other program, we are going to see the number 40585 and use a different methodology for a loop that can be installed in the program. Now we are going to see different outputs for the program that has been shown above. The outputs are produced for numbers 1, 2, 25 and 145.
Output:
In this coding example, we are going to see how the program can be done using for- loop. The previous program was using a while loop to calculate the factorial of the number. We will see the coding example below of how to calculate the factorial using a for a loop.
Code:
//Java program to check if a number // is a special number import java.util.*; import java.io.*; class Special { // function to calculate the factorial // of any number using for loop static int factorial(int n) { int fact = 1; for (int i=1;i<=n;i++) { fact = fact * i; ; } return fact; } // function to Check if number is Special static boolean isSpecial(int n) { int sum = 0; int t = n; while (t != 0) { // calculate factorial of last digit // of temp and add it to sum sum += factorial(t % 10); // replace value of t by t/10 t = t / 10; } // Check if number is Special return (sum == n); } // Driver code public static void main(String[] args)throws IOException { BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); System.out.println("Enter the number to check if it is Special"); int n = Integer.parseInt(br.readLine()); if (isSpecial(n)) System.out.println("YES- The number is a special number"); else System.out.println("NO- The number is not a special number"); } }
In this number 145 and 40585, both Special numbers satisfy the prerequisite condition of becoming one. Hence we find that the numbers are both Special numbers that have been shown in the output.
Output:
In the article’s codes are very useful, and they can be used to see the print statement by someone easily on the BlueJ platform. Since the factorial concept comes into the picture, we can have a concept related to a number factorial. The last digit of a sum of factorials of the first N terms where N>5 is always 3 because the last digit is always zero after that. Also, whenever we are considering factorial of numbers, they are not generally used in the case of decimals or fractions in a number. So, we have to only use a positive integer for the use of our numbers in the factorial program. If a fraction enters the program, then the program will terminate. We can also calculate the number of 10’s in certain big factorial by a calculation. We will see that in another article.
In this article, we have seen four numbers majorly: Special numbers or Krishnamurthy numbers in general. So, we see the basic structure and behavior of the numbers with respect to their factorials. We check that numbers 1,2,4 and 40585 are Special numbers which have the same characteristic as each other.
The above is the detailed content of Special Number in Java. For more information, please follow other related articles on the PHP Chinese website!