In this tutorial, we will learn about Krishnamurthy numbers and write a Krishnamurthy Number program in Java. We will write two programs for Krishnamurthy number in java.
Krishnamurthy Number
A number is said to be a Krishnamurthy Number if the sum of the factorial of all digits of a number is equal to the original number itself. Krishnamurthy Number is also known as Strong number and is frequently asked questions in interviews.
Example:
Input: 145
Output: Krishnamurthy Number
= 1! + 4! + 5!
= 1 + 24 + 120
= 145
= Original Number
Java Program to check Krishnamurthy Number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import java.util.Scanner; public class KrishnamurthyProgram { // boolean function to check Krishnamurthy Number public static boolean isKrishnamurthy(int number) { int sum = 0, lastDigit = 0; int temp = number; // iterating through all the digits while (temp != 0) { lastDigit = temp % 10; sum += factFunc(lastDigit); //calling factFunc func for every digit temp /= 10; } // returns true if number and sum are equal if (sum == number) return true; return false; } //user defined function to calculate the factorial public static long factFunc(int n) { long fact = 1; for (int i = 1; i <= n; i++) fact *= i; return fact; } // main function public static void main(String[] args) { int num = 0; boolean checkResult = false; Scanner scan = new Scanner(System.in); // user input System.out.print("Enter an integer: "); num = scan.nextInt(); // calling function by passing the entered number checkResult = isKrishnamurthy(num); //Check and display the result if (checkResult) System.out.println(num + " is a Krishnamurthy number"); else System.out.println(num + " is not a Krishnamurthy number"); } } |
Output:
//Run: 1
Enter an integer: 145
145 is a Krishnamurthy number
//Run: 2
Enter an integer: 123
123 is not a Krishnamurthy number
We have created two different user-defined functions, one to calculate the factorial of a number and another to check the number for Krishnamurthy which is a boolean function.
Java Program to check Krishnamurthy number within the given Range
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import java.util.Scanner; public class KrishnamurthyProgram { // main function public static void main(String[] args) { int lrRange, upRange; //create Scanner class object to take input Scanner scan = new Scanner(System.in); // take input from end-user System.out.print("Enter lower Range value: "); lrRange = scan.nextInt(); System.out.print("Enter Upper Range value: "); upRange = scan.nextInt(); System.out.println("The Krishnamurthy number between " + lrRange + " and " + upRange + " are: "); for (int i = lrRange; i <= upRange; i++) { if (isKrishnamurthy(i)) System.out.print(i + " "); } } // boolean function to check Krishnamurthy Number public static boolean isKrishnamurthy(int num) { int sum = 0, lastDigit = 0; int temp = num; // iterating through all the digits while (temp != 0) { lastDigit = temp % 10; sum += factFunc(lastDigit); //calling factFunc func for every digit temp /= 10; } // compare sum and number if (sum == num) return true; return false; } //user defined function to calculate the factorial public static long factFunc(int n) { long fact = 1; for (int i = 1; i <= n; i++) fact *= i; return fact; } } |
Output:
1 2 3 4 | Enter lower Range value: 1 Enter Upper Range value: 1000 The Krishnamurthy number between 1 and 1000 are: 1 2 145 |
As you can see, we did the same way by creating separate functions but here we took the user input for both the lower and upper range and called the function within those ranges to find all the possible Krishnamurthy number java.