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.