C Program to Check Armstrong Number

Here is a C program to check whether a number is Armstrong number or not. A number is called an Armstrong number if the sum of cubes of every digit of a number is equal to the number itself.

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 check for Armstrong number
  1. Take a number as input from user and store it in an integer variable(Let's call it inputNumber).
  2. Find the cubic sum of digits of inputNumber, and store it in sum variable.
  3. Compare inputNumber and sum.
  4. If both are equal then input number is Armstrong number otherwise not an Armstrong number..

C program to check a number is Armstrong number or not

This program first takes a number as input from user using scanf function and stores it in variable 'number'. It makes a copy of number in variable 'temp'. Then using a while loop, it calculates the cube of every digit of temp(loop will terminate when temp becomes zero) and stores in a 'sum' variable. If sum is equal to number then it is an Armstrong number otherwise not an Armstrong number.

#include <stdio.h>

int main(){
    int number, sum = 0, lastDigit, temp;
    printf("Enter a number : ");
    scanf("%d", &number);
    temp = number;
    
    while(temp != 0){
        lastDigit = temp%10;
        sum = sum + (lastDigit*lastDigit*lastDigit);
        temp = temp/10;
    }
    
    if(sum == number){
        printf("%d is Armstrong Number \n", number);
    } else {
        printf("%d is not an Armstrong Number \n", number);       
    }
    return 0;
}
Output
Enter a number : 153
153 is Armstrong Number
Enter a number : 120
120 is not an Armstrong Number

C Program to check whether a number is Armstrong number or not using function

This program uses a user defined function getCubicSumOfDigits that returns the cubic sum of all digits of a number.

#include <stdio.h>

int getCubicSumOfDigits(int number);
int main(){
    int number, sum;
    printf("Enter a number \n");
    scanf("%d", &number);
    
    sum = getCubicSumOfDigits(number);
    
    if(sum == number){
        printf("%d is Armstrong Number \n", number);
    } else {
        printf("%d is not an Armstrong Number \n", number);       
    }
    return 0;
}

int getCubicSumOfDigits(int number){
    int lastDigit, sum = 0;
    while(number != 0){
        lastDigit = number%10;
        sum = sum + lastDigit*lastDigit*lastDigit;
        number = number/10;
    }
    return sum;
}
Output
Enter a number 407
407 is Armstrong Number

Related Topics
C program to generate armstrong numbers
C Program to calculate factorial of a number
C program to calculate power of a number
C program to find hcf and lcm of two numbers
C program to add digits of a number
C Program to find nPr and nCr
C program to remove extra spaces from string
List of all C programs