C program to check whether a number is armstrong number or not

Write a C program to input a number from user and check whether given number is Armstrong number or not. How to check Armstrong numbers in C program. Logic to check Armstrong numbers in C programming.

Example

Input

Input number: 371

Output

371 is armstrong number

Required knowledge

Basic C programming, If else, While loop

What is Armstrong number?

An Armstrong number is a n-digit number that is equal to the sum of the nth power of its digits. For example -
6 = 61 = 6
371 = 33 + 73 + 13 = 371

Logic to check Armstrong number

Step by step descriptive logic to check Armstrong number.

  1. Input a number from user. Store it in some variable say num. Make a temporary copy of the value to some another variable for calculation purposes, say originalNum = num.
  2. Count total digits in the given number, store result in a variable say digits.
  3. Initialize another variable to store the sum of power of its digits ,say sum = 0.
  4. Run a loop till num > 0. The loop structure should look like while(num > 0).
  5. Inside the loop, find last digit of num. Store it in a variable say lastDigit = num % 10.
  6. Now comes the real calculation to find sum of power of digits. Perform sum = sum + pow(lastDigit, digits).
  7. Since the last digit of num is processed. Hence, remove last digit by performing num = num / 10.
  8. After loop check if(originalNum == sum), then it is Armstrong number otherwise not.

Program to check Armstrong number


/**
 * C program to check Armstrong number
 */
#include <stdio.h>
#include <math.h>

int main()
{
    int originalNum, num, lastDigit, digits, sum;

    /* Input number from user */
    printf("Enter any number to check Armstrong number: ");
    scanf("%d", &num);

    sum = 0;

    /* Copy the value of num for processing */
    originalNum = num;

    /* Find total digits in num */
    digits = (int) log10(num) + 1;

    /* Calculate sum of power of digits */
    while(num > 0)
    {
        /* Extract the last digit */
        lastDigit = num % 10;

        /* Compute sum of power of last digit */
        sum = sum + round(pow(lastDigit, digits));

        /* Remove the last digit */
        num = num / 10;
    }

    /* Check for Armstrong number */
    if(originalNum == sum)
    {
        printf("%d is ARMSTRONG NUMBER", originalNum);
    }
    else
    {
        printf("%d is NOT ARMSTRONG NUMBER", originalNum);
    }

    return 0;
}

In the above program round() and pow() are mathematical functions present in math.h header file.

Output

Enter any number to check Armstrong number: 371
371 is ARMSTRONG NUMBER

Happy coding 😉

About Pankaj

Pankaj Prakash is the founder, editor and blogger at Codeforwin. He loves to learn new techs and write programming articles especially for beginners. He works at Vasudhaika Software Sols. as a Software Design Engineer and manages Codeforwin. In short Pankaj is Web developer, Blogger, Learner, Tech and Music lover.

Follow on: Facebook | Twitter | Google | or

Comments and discussion
Have a doubt, write here. I will help my best.
Before commenting you must escape your source code before commenting. Paste your source code inside
<pre><code> ----Your Source Code---- </code></pre>