Loop Exercises
Write a C program to print Strong numbers between 1 to n. C program to print all strong numbers between a given range. Logic to print strong numbers in a given range in C program.
Required knowledge
Basic C programming, If satement, For loop, Nested loop
What is a Strong number?
Strong number is a special number whose sum of factorial of digits is equal to the original number. For example: 145 is strong number. Since, 1! + 4! + 5! = 145
Logic to print Strong numbers between 1 to n
Step by step descriptive logic to print strong numbers from 1 to n.
- Input upper limit to print strong number from user. Store it in a variable say end.
- Run a loop from 1 to end, increment 1 in each iteration. Structure of the loop should be similar to for(i=1; i<=end; i++).
- For each iteration inside loop check i for strong number. Print the value of i if it is a strong number.
Let us convert the above logic to a C program.
Program to print strong numbers between 1 to n
/** * C program to print all Strong Numbers between 1 to n */ #include <stdio.h> int main() { int i, j, cur, lastDigit, end; long long fact, sum; /* Input upper limit from user */ printf("Enter upper limit: "); scanf("%d", &end); printf("All Strong numbers between 1 to %d are:\n", end); /* Iterate from 1 to end */ for(i=1; i<=end; i++) { /* Number to check for strong number */ cur = i; sum = 0; /* Find the sum of factorial of digits */ while(cur > 0) { fact = 1ll; lastDigit = cur % 10; /* Find factorial of last digit of current num. */ for( j=1; j<=lastDigit; j++) { fact = fact * j; } sum += fact; cur /= 10; } /* Print 'i' if it is strong number */ if(sum == i) { printf("%d, ", i); } } return 0; }
Once, you got the logic of printing strong numbers between 1 to n. You can easily modify the logic to find strong numbers in any given range. Below program illustrates how to print strong numbers in a given range.
Program to print strong numbers in given range
/** * C program to print Strong numbers in given range */ #include <stdio.h> int main() { int i, j, cur, lastDigit, start, end; long long fact, sum; /* Input lower and upper limit from user */ printf("Enter lower limit: "); scanf("%d", &start); printf("Enter upper limit: "); scanf("%d", &end); printf("All Strong numbers between %d to %d are:\n", start, end); /* Iterate from 1 to end */ for(i=start; i<=end; i++) { /* Number to check for strong number */ cur = i; sum = 0; /* Find the sum of factorial of digits */ while(cur > 0) { fact = 1ll; lastDigit = cur % 10; /* Find factorial of last digit of current num. */ for( j=1; j<=lastDigit; j++) { fact = fact * j; } sum += fact; cur /= 10; } /* Print 'i' if it is strong number */ if(sum == i) { printf("%d, ", i); } } return 0; }
Output
Enter lower limit: 1
Enter upper limit: 100000
1, 2, 145, 40585,