Java Program to Check Armstrong Number

To understand this example, you should have the knowledge of the following Java programming topics:


A positive integer is called an Armstrong number of order n if

abcd... = an + bn + cn + dn + ...

In case of an Armstrong number of 3 digits, the sum of cubes of each digits is equal to the number itself. For example:

153 = 1*1*1 + 5*5*5 + 3*3*3  // 153 is an Armstrong number.

Example 1: Check Armstrong Number for 3 digit number

public class Armstrong {

    public static void main(String[] args) {

        int number = 371, originalNumber, remainder, result = 0;

        originalNumber = number;

        while (originalNumber != 0)
        {
            remainder = originalNumber % 10;
            result += Math.pow(remainder, 3);
            originalNumber /= 10;
        }

        if(result == number)
            System.out.println(number + " is an Armstrong number.");
        else
            System.out.println(number + " is not an Armstrong number.");
    }
}

Output

371 is an Armstrong number.
  • First, given number (number)'s value is stored in another integer variable, originalNumber. This is because, we need to compare the values of final number and original number at the end.
  • Then, a while loop is used to loop through originalNumber until it is equal to 0.
    • On each iteration, the last digit of num is stored in remainder.
    • Then, remainder is powered by 3 (number of digits) using Math.pow() function and added to result.
    • Then, the last digit is removed from originalNumber after division by 10.
  • Finally, result and number are compared. If equal, it is an Armstrong number. If not, it isn't.

Example 2: Check Armstrong number for n digits

public class Armstrong {

    public static void main(String[] args) {

        int number = 1634, originalNumber, remainder, result = 0, n = 0;

        originalNumber = number;

        for (;originalNumber != 0; originalNumber /= 10, ++n);

        originalNumber = number;

        for (;originalNumber != 0; originalNumber /= 10)
        {
            remainder = originalNumber % 10;
            result += Math.pow(remainder, n);
        }

        if(result == number)
            System.out.println(number + " is an Armstrong number.");
        else
            System.out.println(number + " is not an Armstrong number.");
    }
}

Output

1634 is an Armstrong number.

In this program, instead of using while loop, we've used two for loops.

The first for loop is used to count the number of digits in the number. It is the condensed form of:

for (;originalNumber != 0; originalNumber /= 10) {
     n++;
}

The second for loop then calculates the result where on each iteration, the remainder is powered by the number of digits n.


Also Read:

Before we wrap up, let’s put your knowledge of Java Program to Check Armstrong Number to the test! Can you solve the following challenge?

Challenge:

Write a function to check if a number is an Armstrong number.

  • An Armstrong number of three digits is an integer such that the sum of the cubes of its digits is equal to the number itself.
  • For example, 371 is an Armstrong number since 3^3 + 7^3 + 1^3 = 371.
  • Return "It's an Armstrong Number" if num is an Armstrong Number. Otherwise, return "It's not an Armstrong Number".
Did you find this article helpful?

Our premium learning platform, created with over a decade of experience and thousands of feedbacks.

Learn and improve your coding skills like never before.

Try Programiz PRO
  • Interactive Courses
  • Certificates
  • AI Help
  • 2000+ Challenges