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 `n`^{th} power of its digits. For example -

6 = 6^{1} = 6

371 = 3^{3} + 7^{3} + 1^{3} = 371

## Logic to check Armstrong number

Step by step descriptive logic to check Armstrong number.

- 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`

. - Count total digits in the given number, store result in a variable say
`digits`. - Initialize another variable to store the sum of power of its digits ,say
`sum = 0`

. - Run a loop till
`num > 0`

. The loop structure should look like`while(num > 0)`

. - Inside the loop, find last digit of
`num`. Store it in a variable say`lastDigit = num % 10`

. - Now comes the real calculation to find sum of power of digits. Perform
`sum = sum + pow(lastDigit, digits)`

. - Since the last digit of
`num`is processed. Hence, remove last digit by performing`num = num / 10`

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

<pre><code> ----Your Source Code---- </code></pre>