c++ program to check whether given input is armstrong number or not.
#include <iostream>
using namespace std;
int main()
{
int origNum, num, rem, sum = 0;
cout << "Enter a positive integer: ";
cin >> origNum;
num = origNum;
while(num != 0)
{
digit = num % 10;
sum += digit * digit * digit;
num /= 10;
}
if(sum == origNum)
cout << origNum << " is an Armstrong number.";
else
cout << origNum << " is not an Armstrong number.";
return 0;
}
Output
Enter a positive integer: 153
153 is an Armstrong number.
Explanation
153=1*1*1+5*5*5+3*3*3
- In the above program, a positive integer is asked to enter by the user which is stored in the variable origNum .
- Then, the number is copied to another variable num . This is done because we need to check the origNum at the end.
- Inside the while loop, last digit is separated from num by the operation digit = num % 10;. This digit is cubed and added to the variable sum .
- Now, the last digit is discarded using the statement num /= 10;.
- In the next cycle of while loop, second last digit is separated, cubed and added to sum .
- This continues until no digits are left in num . Now, the total sum sum is compared to the original number origNum .
- If the numbers are equal, the entered number is an Armstrong number. If not, the number isn't an Armstrong number.