Loop Exercises
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.
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.
- 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