Related Articles
C/C++ program for Armstrong Numbers
• Last Updated : 11 Jul, 2020

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 = 153

Input: 120
Output: No
Explanation:
120 is not an Armstrong number.
1*1*1 + 2*2*2 + 0*0*0 = 9

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `` ` `// 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 ``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;``}`
Output:
```True
```

Time Complexity: O(log10N)
Auxiliary Space: O(1)

Want to learn from the best curated videos and practice problems, check out the C Foundation Course for Basic to Advanced C.

My Personal Notes arrow_drop_up