Given a number N, the task is to check whether the given number is Armstrong number or not. If the given number is Armstrong Number then print “Yes” else print “No”.
A positive integer of D digits is called an armstrong-numbers of order D (order is the number of digits) if
Where D is number of digit in number N
and N(1), N(2), N(3)… are digit of number N.
Examples:
Input: N = 153
Output: Yes
Explanation:
153 is an Armstrong number.
1*1*1 + 5*5*5 + 3*3*3 = 153Input: 120
Output: No
Explanation:
120 is not an Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9
Approach: The idea is to count the number of digits(say d) in the given number N. For every digit(say r) in the given number N find the value of rd and if the summation of all the values is N then print “Yes” else print “No”.
Below is the implementation of the above approach:
C
// C program to find Armstrong number #include <stdio.h> // Function to calculate N raised // to the power D int power( int N, unsigned int D) { if (D == 0) return 1; if (D % 2 == 0) return power(N, D / 2) * power(N, D / 2); return N * power(N, D / 2) * power(N, D / 2); } // Function to calculate the order of // the number int order( int N) { int r = 0; // For each digit while (N) { r++; N = N / 10; } return r; } // Function to check whether the given // number is Armstrong number or not int isArmstrong( int N) { // Calling order function int D = order(N); int temp = N, sum = 0; // For each digit while (temp) { int Ni = temp % 10; sum += power(Ni, D); temp = temp / 10; } // If satisfies Armstrong condition if (sum == N) return 1; else return 0; } // Driver Code int main() { // Given Number N int N = 153; // Function Call if (isArmstrong(N) == 1) printf ( "True\n" ); else printf ( "False\n" ); return 0; } |
C++
// C++ program to find Armstrong number #include <bits/stdc++.h> using namespace std; // Function to calculate N raised // to the power D int power( int N, unsigned int D) { if (D == 0) return 1; if (D % 2 == 0) return power(N, D / 2) * power(N, D / 2); return N * power(N, D / 2) * power(N, D / 2); } // Function to calculate the order of // the number int order( int N) { int r = 0; // For each digit while (N) { r++; N = N / 10; } return r; } // Function to check whether the given // number is Armstrong number or not int isArmstrong( int N) { // To find order of N int D = order(N); int temp = N, sum = 0; // Traverse each digit while (temp) { int Ni = temp % 10; sum += power(Ni, D); temp = temp / 10; } // If satisfies Armstrong condition if (sum == N) return 1; else return 0; } // Driver Code int main() { // Given Number N int N = 153; // Function Call if (isArmstrong(N) == 1) cout << "True" ; else cout << "False" ; return 0; } |
True
Time Complexity: O(log10N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!