C++ program to check if a number is an amstrong number has been shown here. A positive integer of order n is called an amstrong number if the sum of each digit to the power n is equal to that number.
For example, 153 and 8208 are amstrong numbers as $153 = 1^3 + 5^3 + 3^3$ and $8208 = 8^4 + 2^4 + 0^4 + 8^4$.
The algorithm, pseudocode and time complexity of the program have been shown below.
1. Algorithm to check if a number is an amstrong number
1. Take input of a positive number n.
2. Calculate d, the total no of digit of n
3. Extract each digit $p_i$ and perform sum = $\sum_{i=1}^d p_i ^d $
4. Check If sum == n
5. If step 4 is true, then display n as an amstrong number
6. If step 4 is false, then display n as not an amstrong number
2. Pseudocode to check if a number is an amstrong number
Input : A postive number $n$ as input
Output : $n$ is an amstrong number or not an amstrong number
1. Procedure checkAmstrong($n$):
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13. End Procedure
3. Time complexity to check if a number is an amstrong number
Time Complexity: O(log(n))
Where log(n) is the total no of digits of the input number n.
4. C++ Program & output to check if a number is an amstrong number
/******************************** alphabetacoder.com C++ program to check if a number is an amstrong number or not *********************************/ #include <iostream> #include <cmath> using namespace std; int main() { // declare variables int n, d = 0, t, r, sum = 0; // take input of the number cout << "Enter the number = "; cin >> n; // copy value t = n; // calculate the number of digit while (t != 0) { d++; t = t / 10; } // copy value t = n; // find the sum of digits each to the power d while (t != 0) { r = t % 10; sum = sum + pow(r, d); t = t / 10; } //check if input number is amstrong or not if (n == sum) cout << n << " is an amstrong number!" << endl; else cout << n << " is not an amstrong number!" << endl; return 0; }
Output
Case 1:
Enter the number = 153
153 is an amstrong number!
Case 2:
Enter the number = 5
5 is an amstrong number!
Case 3:
Enter the number = 50
50 is not an amstrong number!