Write a C program to enter any number from user and check whether given number is Armstrong number or not using for loop. C program for Armstrong number. Logic to check Armstrong numbers in C program.

**Example**

**Input**

Input number: 371

**Output**

371 is armstrong number

## Required knowledge

Basic C programming, For loop, If else

## What is Armstrong number?

An Armstrong number is an

-digit number that is equal to the sum of the *n**n*^{th} powers of its digits. Read more about Armstrong numbers. Below are few examples of Armstrong numbers:

6 = 6^{1} = 6

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

## Logic to check Armstrong number

There are three important concepts required for checking Armstrong number. That you must be strong in for before this program. The entire logic is based upon these three concepts.

Below is the step by step descriptive logic to check Armstrong number.

- Read number from user to be checked for Armstrong. 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 it in some 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 extract the last digit of num. Store it in some variable say lastDigit = num % 10.
- Now comes the real calculation to find sum of power of digits. Perform sum = sum + pow(lastDigit, digits). Here pow(x, y) returns x
^{y}. - Since the last digit of num is processed. Hence, remove last digit by performing num = num / 10. Repeat step 5-7 till num > 0.
- After loop according to definition if originalNum == sum, then it is Armstrong number otherwise not.

## Program to check Armstrong number

#include <stdio.h> #include <math.h> int main() { int originalNum, num, lastDigit, digits, sum; /* * Read 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; // Find sum 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; }

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

Happy coding ;)

thanks for this man

ReplyDelete