Print all Strong numbers less than or equal to N
Given a number N, print all the Strong Numbers less than or equal to N.
Strong number is a special number whose sum of the factorial of digits is equal to the original number.
For Example: 145 is strong number. Since, 1! + 4! + 5! = 145.
Examples:
Input: N = 100
Output: 1 2
Explanation:
Only 1 and 2 are the strong numbers from 1 to 100 because
1! = 1, and
2! = 2Input: N = 1000
Output: 1 2 145
Explanation:
Only 1, 2 and 145 are the strong numbers from 1 to 1000 because
1! = 1,
2! = 2, and
(1! + 4! + 5!) = 145
Approach: The idea is to iterate from [1, N] and check if any number between the range is strong number or not. If yes then print the corresponding number, else check for the next number.
Below is the implementation of the above approach:
C++
// C++ program for the above approach #include<bits/stdc++.h> using namespace std; // Store the factorial of all the // digits from [0, 9] int factorial[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; // Function to return true // if number is strong or not bool isStrong( int N) { // Converting N to String so that // can easily access all it's digit string num = to_string(N); // sum will store summation of // factorial of all digits // of a number N int sum = 0; for ( int i = 0; i < num.length(); i++) { sum += factorial[num[i] - '0' ]; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N void printStrongNumbers( int N) { // Iterating from 1 to N for ( int i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { cout << i << " " ; } } } // Driver Code int main() { // Given number int N = 1000; // Function call printStrongNumbers(N); return 0; } // This code is contributed by rutvik_56 |
Java
// Java program for the above approach class GFG { // Store the factorial of all the // digits from [0, 9] static int [] factorial = { 1 , 1 , 2 , 6 , 24 , 120 , 720 , 5040 , 40320 , 362880 }; // Function to return true // if number is strong or not public static boolean isStrong( int N) { // Converting N to String so that // can easily access all it's digit String num = Integer.toString(N); // sum will store summation of // factorial of all digits // of a number N int sum = 0 ; for ( int i = 0 ; i < num.length(); i++) { sum += factorial[Integer .parseInt(num .charAt(i) + "" )]; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N public static void printStrongNumbers( int N) { // Iterating from 1 to N for ( int i = 1 ; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { System.out.print(i + " " ); } } } // Driver Code public static void main(String[] args) throws java.lang.Exception { // Given Number int N = 1000 ; // Function Call printStrongNumbers(N); } } |
Python3
# Python3 program for the # above approach # Store the factorial of # all the digits from [0, 9] factorial = [ 1 , 1 , 2 , 6 , 24 , 120 , 720 , 5040 , 40320 , 362880 ] # Function to return true # if number is strong or not def isStrong(N): # Converting N to String # so that can easily access # all it's digit num = str (N) # sum will store summation # of factorial of all # digits of a number N sum = 0 for i in range ( len (num)): sum + = factorial[ ord (num[i]) - ord ( '0' )] # Returns true of N # is strong number if sum = = N: return True else : return False # Function to print all # strong number till N def printStrongNumbers(N): # Iterating from 1 to N for i in range ( 1 , N + 1 ): # Checking if a number is # strong then print it if (isStrong(i)): print (i, end = " " ) # Driver Code if __name__ = = "__main__" : # Given number N = 1000 # Function call printStrongNumbers(N) # This code is contributed by Chitranayal |
C#
// C# program for the above approach using System; class GFG{ // Store the factorial of all the // digits from [0, 9] static int [] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 }; // Function to return true // if number is strong or not public static bool isStrong( int N) { // Converting N to String so that // can easily access all it's digit String num = N.ToString(); // sum will store summation of // factorial of all digits // of a number N int sum = 0; for ( int i = 0; i < num.Length; i++) { sum += factorial[ int .Parse(num[i] + "" )]; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N public static void printStrongNumbers( int N) { // Iterating from 1 to N for ( int i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { Console.Write(i + " " ); } } } // Driver Code public static void Main(String[] args) { // Given Number int N = 1000; // Function Call printStrongNumbers(N); } } // This code is contributed by sapnasingh4991 |
Javascript
<script> // Javascript program for the above approach // Store the factorial of all the // digits from [0, 9] let factorial = [ 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880 ]; // Function to return true // if number is strong or not function isStrong(N) { // Converting N to String so that // can easily access all it's digit let num = N.toString(); // sum will store summation of // factorial of all digits // of a number N let sum = 0; for (let i = 0; i < num.length; i++) { sum += factorial[num[i] - '0']; } // Returns true of N is strong number return sum == N; } // Function to print all // strong number till N function printStrongNumbers(N) { // Iterating from 1 to N for (let i = 1; i <= N; i++) { // Checking if a number is // strong then print it if (isStrong(i)) { document.write(i + " " ); } } } // Driver Code // Given number let N = 1000; // Function call printStrongNumbers(N); // This code is contributed by Mayank Tyagi </script> |
1 2 145
Time Complexity: O(N log10N)
Auxiliary Space: O(log10N)