C++ Check whether the number is Armstrong or not
Hello Everyone!
In this tutorial, we will learn how to Check whether given number is Armstrong or not, in the C++ programming language.
What is an Armstrong number?
In number theory, an Armstrong number in a given number base is a number that is the sum of its own digits each raised to the power of the number of digits. (In programming, we usually define it for a 3 digit number)
Example:
153 is an Armstrong number as 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153. (same as the original number 153)
But, 213 is not an Armstrong number as 2^3 + 1^3 + 3^3 = 8 + 1 + 27 = 36 (which is not equal to the original number 213)
Code:
#include <iostream>
using namespace std;
int main()
{
cout << "\n\nWelcome to Studytonight :-)\n\n\n";
cout << " ===== Program to check if the number is Armstrong or not ===== \n\n";
//variable declaration
int n, n1, remainder, num = 0;
//taking input from the command line (user) all at once
cout << " Enter a positive integer : ";
cin >> n;
//storing the original value before modifying it
n1=n;
//Logic to check if it is Armstrong or not for a 3 digit number
while( n1!=0 )
{
remainder = n1 % 10; //storing the digits at the units place
num += remainder*remainder*remainder;
n1/=10;
}
cout << "\n\n\n";
if(num == n)
{
cout << n << " is an Armstrong number.";
}
else
{
cout << n << " is not an Armstrong number.";
}
cout << "\n\n\n";
return 0;
}
Output:
Now let's see what we have done in the above program.
Program Explained:
Let's break down the parts of the code for better understanding.
//Logic to check if it is Armstrong or not for a 3 digit number
while( n1!=0 )
{
remainder = n1 % 10; //storing the digits at the units place
num += remainder*remainder*remainder;
n1/=10;
}
The above code snippet is used to check whther a given 3 digit number is Armstrong or not.
remainder = n1 % 10;
This is used to store the digit at the units place into the remainder variable.
num += remainder*remainder*remainder;
This statement is used to perfrom the cubing overation and adding onto the previous sum to find the final sum of the cubes of all the digits of the given 3 digit number.
n1/=10;
This statement, divides the actual number with 10 so that the new value contains only the digits that has not been explored yet.
We will recommend you to program this on your own and perform it's step-by-step analysis using pen-paper for the number 153, to develop better understanding.
Keep Learning : )