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

Ddigits is called an armstrong-numbers of orderD(order is the number of digits) if

WhereDis number of digit in numberN

and N(1), N(2), N(3)… are digit of numberN.

**Examples:**

Input:N = 153Output:YesExplanation:

153 is an Armstrong number.

1*1*1 + 5*5*5 + 3*3*3 = 153

Input:120Output:NoExplanation:

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 **r ^{d}** 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;` `}` |

**Output:**

True

**Time Complexity:** *O(log _{10}N)*

**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.