C Program to find Armstrong numbers
Last updated on September 23, 2020
What are Armstrong numbers? #
Armstrong number is a 3-digit number such that the sum of the cube of each of its digits is equal to the number itself. For example:
1 2 3 4 | 153 = 1^3 + 5^3 + 3^3 = 153
370 = 3^3 + 7^3 + 0^3 = 370
371 = 3^3 + 7^3 + 1^3 = 371
407 = 4^3 + 0^3 + 7^3 = 407
|
The following is a C program find all the Armstrong numbers between 100
and 999
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /**************************************************************
* Program to find the Armstrong numbers between 100 and 999
***************************************************************/
#include <stdio.h>
int main()
{
int num, sum, rem;
for(int n = 100; n < 999; n++)
{
num = n;
sum = 0;
while(num != 0)
{
rem = num % 10; // get the last digit | sum += rem * rem * rem; // cube the remainder and add it to the sum | num = num / 10; // remove the last digit
}
if(n == sum)
{
printf("%d is an Armstrong number\n", n);
}
}
return 0;
}
|
Expected Output:
1 2 3 4 | 153 is an Armstrong number
370 is an Armstrong number
371 is an Armstrong number
407 is an Armstrong number
|
How it works: #
The following table demonstrates what happens at each iteration of the while loop (assuming the n = 153
):
Iteration | rem | sum | num |
---|---|---|---|
After 1st iteration | rem = 153%10 = 3 |
sum = 0 + 3^3 = 27 |
num = 153 / 10 = 15 |
After 2nd iteration | rem = 15%10 = 5 |
sum = 27 + 5^3 = 152 |
num = 15 / 10 = 1 |
After 3rd iteration | rem = 1%10 = 1 |
sum = 152 + 1^3 = 153 |
num = 1 / 10 = 0 |
Recommended Reading:
- C Program to find the sum of digits of a number
- C Program to find the factorial of a number
- C Program to find Prime Numbers
- C Program to generate Fibonacci sequence
- C Program to find the sum of the digits of a number until the sum is reduced to a single digit
Load Comments