# 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! = 2

Input: 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``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

 ``

Output:
`1 2 145`

Time Complexity: O(N log10N)
Auxiliary Space: O(log10N)

Previous
Next