C++ Program to Check whether a number is Armstrong number or not

Armstrong number in C++

In this post, we will write a C++ Program to check a number is Armstrong or not. We will look at various ways to code Armstrong number in C++.

Armstrong number or not

What is an Armstrong Number

Any number that satisfies the following format –

  • abcd… = an + bn + cn + dn + …
  • Where n is the order(length/digits in number)

That is for any number num if the sum of individual digits is raised to the power of order if the result is equal to the number itself then it is an Armstrong number.

Armstrong Number in C++

C++ Code

Run

#include<bits/stdc++.h>
#include<math.h>
using namespace std;

// Armstrong number is any number following the given rule
// abcd... = a^n + b^n + c^n + d^n + ...
// Where n is the order(length/digits in number)

// Example = 153 (order/length = 3)
// 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153

// Example = 1634 (order/length = 4)
// 1634 = 1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634

// number of digits in a number is order
int order(int x)
{
    int len = 0;
    while (x)
    {
        len++;
        x = x/10;
    }
    return len;
}

bool armstrong(int num, int len){

    int sum = 0, temp, digit;
    temp = num;
    
    // loop to extract digit, find power & add to sum
    while(temp != 0)
    {
        // extract digit
        digit = temp % 10;

        // add power to sum
        sum = sum + pow(digit,len);
        temp /= 10;
    };

    return num == sum;
}

// Driver Code
int main ()
{
    //variables initialization
    int num = 407, len;
 
    // function to get order(length)
    len = order(num);
    
    // check if Armstrong
    if (armstrong(num, len))
        cout << num << " is armstrong";
    else
        cout << num << " is not armstrong";


    return 0;
}

Output:-

407 is armstrong

One comment on “C++ Program to Check whether a number is Armstrong number or not”


  • Satya Prakash

    //armstrong number program that is valid for both 3 digit and 4 digit numbers

    #include
    #include

    int main() {
    int num, originalNum, remainder, n = 0;
    float result = 0.0;

    printf(“Enter an integer: “);
    scanf(“%d”, &num);

    originalNum = num;

    // store the number of digits of num in n
    for (originalNum = num; originalNum != 0; ++n) {
    originalNum /= 10;
    }

    for (originalNum = num; originalNum != 0; originalNum /= 10) {
    remainder = originalNum % 10;

    // store the sum of the power of individual digits in result
    result += pow(remainder, n);
    }

    // if num is equal to result, the number is an Armstrong number
    if ((int)result == num)
    printf(“%d is an Armstrong number.”, num);
    else
    printf(“%d is not an Armstrong number.”, num);
    return 0;
    }