C Program to Generate Armstrong Numbers

• Write a C program to generate armstrong numbers.

A number is called an Armstrong number if the sum of cubes of every digit is equal to the number itself. Given a number N, we have to generate a list of all Armstrong numbers between 0 and N.

For Example
407 is an Armstrong number
407 = 4*4*4 + 0*0*0 + 7*7*7

121 is not an Armstrong number
121 is not equal to 1*1*1 + 2*2*2 + 1*1*1
Examples of Armstrong Numbers : 0, 1, 2, 3, 153, 370, 407 etc.

Algorithm to Generate Armstrong number

• Take a number as input from user and store it in number variable.
• Then using for loop we iterate from 0 till N using a counter variable.
• Find the cubic sum of digits of counter, and store it in sum variable.
• Compare counter and sum.
• If both are equal then current number(counter) is Armstrong number otherwise not an Armstrong number.

C program to generate armstrong numbers between 0 and N

This program first takes a number as input from user using scanf function and stores it in variable ‘number’. Then using a for loop, it perform armstrong number check for every number from 0 to ‘number’. It calculates the cube of every digit of counter using getCubicSumOfDigits function and stores in a ‘sum’ variable. If sum is equal to number then it is an Armstrong number otherwise not an Armstrong number.

/*
* C Program to generate armstrong number
*/
#include <stdio.h>
#include <conio.h>

int getCubicSumOfDigits(int number);
int main(){
int number, sum, counter;
printf("Enter a number : ");
scanf("%d", &number);
printf("Armstrong numbers between 0 and %d\n", number);
/* Iterate from 0 till N, and check for Armstrong number */
for(counter = 0; counter <= number; counter++){
sum = getCubicSumOfDigits(counter);
if(sum == counter){
printf("%d\n", counter);
}
}
getch();
return 0;
}

/*
* Funtion to calculate the sum of cubes of digits of a number
* getCubicSumOfDigits(123) = 1*1*1 + 2*2*2 + 3*3*3;
*/
int getCubicSumOfDigits(int number){
int lastDigit, sum = 0;
while(number != 0){
lastDigit = number%10;
sum = sum + lastDigit*lastDigit*lastDigit;
number = number/10;
}
return sum;
}

Program Output

Enter a number : 10000
Armstrong numbers between 0 and 10000
0
1
153
370
371
407