diff --git a/Java/README.md b/Java/README.md index 7a3f5f6a48..9997359506 100644 --- a/Java/README.md +++ b/Java/README.md @@ -100,6 +100,7 @@ _add list here_ - [Sieve of Eratosthenes](math/SieveOfEratosthenes.java) - [Catalan Number](math/CatalanNumber.java) - [Palindrome Number Using Recursion](math/PalindromeRecursion.java) +- [Strong Number Using Recursion](math/check_strong_number.java) ## Dynamic Programming diff --git a/Java/math/check_strong_number.java b/Java/math/check_strong_number.java new file mode 100644 index 0000000000..de7f92f6f3 --- /dev/null +++ b/Java/math/check_strong_number.java @@ -0,0 +1,50 @@ + +/* +Checking for a strong number using indirect recursion +Strong Number = 145 +1! + 4! + 5! =145 +sumOfFactorialOfDigit(int n) - extracts digit of n and calls factorial(n). Returns sum of factorial of digits +factorial(n)- returns factorial of extracted digits passed in the argument +*/ + +import java.util.*; +class check_strong_number { + /*recursive function for sum of factorial of digits*/ + public static int sumOfFactorialOfDigit(int n) + + { + if (n == 0) + return n; + else + return (factorial(n % 10) + sumOfFactorialOfDigit(n / 10)); + + } + /*recursive function to find the factorial of n */ + public static int factorial(int n) { + if (n == 0) + return 1; + else + return (n * factorial(n - 1)); + } + + public static void main() { + Scanner sc = new Scanner(System.in); + System.out.print(" Enter Number. N = "); + int num = sc.nextInt(); + if (num == sumOfFactorialOfDigit(num)) + System.out.println(" It is a Strong Number"); + else + System.out.println(" It is not a Strong Number"); + } +} + +/* +Sample Input And Output : +N = 145 +It is a Strong Number +N = 534 +It is not a Strong Number + +Time Complexity : O(n) +Space Complexity : 1 +*/