Armstrong Number Checking Algorithm
Armstrong Number Checking Algorithm
Overview
This algorithm determines whether a given integer is an Armstrong number. An Armstrong number (also known as a narcissistic number, pluperfect digital invariant, or pluperfect number) is a number that is the sum of its own digits each raised to the power of the number of digits. The implementation is provided in C++.
Algorithm Description
The algorithm follows these steps:
Count the number of digits in the given integer
n.Calculate the sum of each digit raised to the power of the number of digits.
Check if the calculated sum is equal to the original number
n.If equal, return
true, indicating thatnis an Armstrong number.If not equal, return
false.
Code Implementation
The algorithm is implemented in C++ as follows:
#include <iostream>
#include <cmath>
using namespace std;
bool isArmstrong(int n) {
int originalNum = n;
int count = 0;
int sum = 0;
// Count the number of digits
while (n != 0) {
n /= 10;
count++;
}
// Reset n to the original number
n = originalNum;
// Calculate the sum of each digit raised to the power of the number of digits
while (n != 0) {
int digit = n % 10;
sum += pow(digit, count);
n /= 10;
}
// Check if the sum is equal to the original number
return (sum == originalNum);
}
Example
For instance, if n is 153, the algorithm will perform the following calculations:
Count digits: 3 digits
Calculate sum: (1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153)
Since the sum is equal to the original number, the function returns true, indicating that 153 is an Armstrong number.
Usage
To use the provided function, call isArmstrong with an integer argument:
int main()
{
int n1 = 153;
if (isArmstrong(n1))
{
cout << "Yes, it is an Armstrong Number\n";
}
else
{
cout << "No, it is not an Armstrong Number\n";
}
return 0;
}