Skip to content
Related Articles

Related Articles

Print all Strong numbers less than or equal to N
  • Last Updated : 17 Oct, 2020

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output: 

1 2 145



 

Time Complexity: O(N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :