# 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

### 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.

• `round()` function rounds a fractional number to nearest integer.
• `pow()` function is used to find power of any number.

Output

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

Happy coding 😉 