Problem: Write a C program to check whether the given number is Strong or not.

A strong Number is a number whose sum of the factorial of digits is equal to its original number, e.g 145.

Strong number example

Steps to Check Strong Number:

  1. Input a number.
  2. Calculate factorial of each of its digit and add them.
  3. If the sum is equal to the original number, then it’s a strong number else not.

Here is the implementation of the steps in C:

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int num, digit, sum=0, i, fact=1;
    printf("Enter a number \n");
    scanf("%d",&num);
 
    int temp = num; //Copying original number
 
    while(temp>0){
        digit = temp%10;
 
        //Calculating factorial of digit
        fact=1;
        for(i=1; i<=digit; i++){
            fact = fact*i;
        }
 
        //Adding Factorial
        sum += fact;
 
        temp = temp/10;
    }
 
    if(sum == num)
        printf("Strong Number \n");
    else
        printf("Not a Strong Number \n");
 
    return 0;
}

Output:

Strong number program in C

Print all Strong Numbers in the Interval

To do this we have to write the logic to check strong numbers in a separate function and then call that function for every number in the interval using for loop.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
 
//Function return true if passed 'num' is Strong
bool isStrong(int num){
  int digit, sum=0, i, fact=1;
 
  int temp = num; //Copying original number
 
  while(temp>0){
    digit = temp%10;
 
    //Calculating factorial of digit
    fact=1;
    for(i=1; i<=digit; i++){
      fact = fact*i;
    }
 
    //Adding Factorial
    sum += fact;
 
    temp = temp/10;
  }
 
  return (sum == num);
}
 
int main()
{
  int low, up, i;
 
  printf("Enter a Lower and upper Interval Value \n");
  scanf("%d",&low);
  scanf("%d",&up);
 
  for(i=low; i<=up; i++){
    if(isStrong(i))
      printf("%d \n",i);
  }
    
  return 0;
}

Output:

Strong numbers between 1 to 1000

In this tutorial, we learned to check a strong number in C. If you have any doubts share them in the comment section.

Leave a Reply

2 × two =