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.

Steps to Check Strong Number:
- Input a number.
- Calculate factorial of each of its digit and add them.
- 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:

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:

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