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:

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

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

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.