Armstrong number program in C
In this post, you will learn how to write a C program to check whether a given number is Armstrong or not.
A number is called an Armstrong number if the sum of cubes of digits of the number is equal to the number itself. It is also known as the Narcissistic number. To lay it out simply, assuming we have a 3-digit number, then each of the digits is raised to the power of three and added to get a number. If the number obtained equals the original number, we call that an Armstrong number. In number theory, we can say an Armstrong number in a given number base b is a number that is the sum of its own digits, each raised to the power of the number of digits.
Formula to check Armstrong number
A positive number of n digits is called an Armstrong number of order n.
abcde.... = an + bn + cn + dn + en +
The following example demonstrates why 371 is an Armstrong number.
371 = (3*3*3)+(7*7*7)+(1*1*1)
where:
(3*3*3)=27
(7*7*7)=343
(1*1*1)=1
So:
27+343+1 = 371
C program to check Armstrong number using while loop
// C program to find Armstrong number
#include <stdio.h>
int main() {
int num, orgnum, remainder, sum = 0;
// getting input from user
// and store in a variable
printf("Enter a three-digit number: ");
scanf("%d", &num);
orgnum = num;
// Here, we are adding cubes of
// every digit and storing the sum
// in a variable
while (orgnum != 0) {
// remainder contains the last digit
remainder = orgnum % 10;
sum += remainder * remainder * remainder;
// removing last digit from the original number
orgnum /= 10;
}
// check, if sum of cubes of every digit is
// equal to number itself, then the number
// is armstrong
if (sum == num)
printf("%d is an Armstrong number.", num);
else
printf("%d is not an Armstrong number.", num);
return 0;
}
Output of the above code-
Enter a three-digit number: 370
370 is an Armstrong number.
Enter a three-digit number: 154
154 is not an Armstrong number.
Enter a three-digit number: 153
153 is an Armstrong number.
In the above example, we have taken input from the user and stored it in a variable num. Next, we have split all the digits of the num and found the cube value of the digits. Then, we added all cube values together and saved the output to the variable sum. If the sum equals to num, then the num is an Armstrong number, and if the sum is not equals to num, then the num is not an Armstrong number.
C program to check Armstrong number using for loop
#include <stdio.h>
void main(){
int num,r,sum=0,temp;
printf("Enter a number:");
scanf("%d",&num);
for(temp=num;num!=0;num=num/10){
r=num % 10;
sum=sum+(r*r*r);
}
if(sum==temp)
printf("%d is an Armstrong number.\n",temp);
else
printf("%d is not an Armstrong number.\n",temp);
}
Output of the above code:
Enter a number:22
22 is not an Armstrong number.
Enter a number:31
31 is not an Armstrong number.
Enter a number:370
370 is an Armstrong number.
Related Articles
C program to check whether a number is positive or negativePriority queue using array in C
Simple calculator program in C
C program for simple interest
Bit stuffing program in C
Prime factors of a number in c
Write a program to check leap year in c
C program to find area of rectangle
C program to convert celsius to fahrenheit
Fibonacci series program in C using recursion
Write a program to find area of circle in C
C program to find greatest of three numbers
C program for addition of two numbers
C program to calculate compound interest
C program to find the ASCII value of a character
C program to convert Decimal to Octal
C program to convert decimal to binary
Write a C program to calculate Simple Interest
C program to check whether a number is even or odd