Table of Contents
In this blog, we will discuss what is Armstrong number and also create Java programs to check if the given number is an Armstrong number or not. The Armstrong number program are frequently asked in Java coding interviews and academics.
Armstrong Number
An Armstrong number is a positive m-digit number that is equal to the sum of the mth powers of their digits. It is also known as pluperfect, or Plus Perfect, or Narcissistic number. It is an OEIS sequence A005188. Let’s understand it through an example.
Armstrong Number Example
1: 11 = 1
2: 21 = 2
3: 31 = 3
153: 13 + 53 + 33 = 1 + 125+ 27 = 153
125: 13 + 23 + 53 = 1 + 8 + 125 = 134 (Not an Armstrong Number)
1634: 14 + 64 + 34 + 44 = 1 + 1296 + 81 + 256 = 1643
Similarly, we can check other number also.
The first few Armstrong numbers between 0 to 999 are 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407. Some other Armstrong numbers are 1634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836, 912985153, 4679307774, 32164049650, 32164049651.
Note that there is no two-digit Armstrong number.
Grab the opportunity to learn Python with Entri! Click Here
Armstrong Program in Java
1: What is the default value of a boolean in Java?
The following Java program prints all the Armstrong numbers up to the specified limit.
ArmstrongNumberExample1.java
- import java.util.Scanner;
- import java.lang.Math;
- public class ArmstsrongNumberExample
- {
- //function to check if the number is Armstrong or not
- static boolean isArmstrong(int n)
- {
- int temp, digits=0, last=0, sum=0;
- //assigning n into a temp variable
- temp=n;
- //loop execute until the condition becomes false
- while(temp>0)
- {
- temp = temp/10;
- digits++;
- }
- temp = n;
- while(temp>0)
- {
- //determines the last digit from the number
- last = temp % 10;
- //calculates the power of a number up to digit times and add the resultant to the sum variable
- sum += (Math.pow(last, digits));
- //removes the last digit
- temp = temp/10;
- }
- //compares the sum with n
- if(n==sum)
- //returns if sum and n are equal
- return true;
- //returns false if sum and n are not equal
- else return false;
- }
- //driver code
- public static void main(String args[])
- {
- int num;
- Scanner sc= new Scanner(System.in);
- System.out.print(“Enter the limit: “);
- //reads the limit from the user
- num=sc.nextInt();
- System.out.println(“Armstrong Number up to “+ num + ” are: “);
- for(int i=0; i<=num; i++)
- //function calling
- if(isArmstrong(i))
- //prints the armstrong numbers
- System.out.print(i+ “, “);
- }
- }
Output:
Enter the limit: 999 Armstrong Number up to 999 are: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407
Let’s create another Java program that checks if the given number is an Armstrong number or not.
ArmstrongNumberExample2.java
- import java.util.Scanner;
- import java.lang.Math;
- public class ArmstsrongNumberExample2
- {
- //function to check if the number is Armstrong or not
- static boolean isArmstrong(int n)
- {
- int temp, digits=0, last=0, sum=0;
- //assigning n into a temp variable
- temp=n;
- //loop execute until the condition becomes false
- while(temp>0)
- {
- temp = temp/10;
- digits++;
- }
- temp = n;
- while(temp>0)
- {
- //determines the last digit from the number
- last = temp % 10;
- //calculates the power of a number up to digit times and add the resultant to the sum variable
- sum += (Math.pow(last, digits));
- //removes the last digit
- temp = temp/10;
- }
- //compares the sum with n
- if(n==sum)
- //returns if sum and n are equal
- return true;
- //returns false if sum and n are not equal
- else return false;
- }
- //driver code
- public static void main(String args[])
- {
- int num;
- Scanner sc= new Scanner(System.in);
- System.out.print(“Enter the number: “);
- //reads the limit from the user
- num=sc.nextInt();
- if(isArmstrong(num))
- {
- System.out.print(“Armstrong “);
- }
- else
- {
- System.out.print(“Not Armstrong “);
- }
- }
- }
Output 1:
Enter the number: 2 Armstrong
Output 2:
Enter the number: 1675 Not Armstrong
Armstrong Number in Java
In this blog, we will develop the Armstrong number program in Java. First, we will develop a java program to check an Armstrong number, and then we will develop a java program for an Armstrong number between 1 to 1000.
A positive integer is called Armstrong number of order n if, abcd…. = an + bn + cn + dn + ….
For Example :- 153
13 + 53 + 33 = 1 + 125 + 27 = 153
So, 153 is an Armstrong number of order 3.
4150 = 45 + 15 + 55 + 05 = 1,024 + 1 + 3,125 + 0 = 4150
So, 4150 is an Armstrong number of order 5
Procedure to check Armstrong number of order N
1) Take a variable and take an order to check
2) Declare variables lastDigit
, power
, and sum
Initialize sum with 0
3) Take a temporary variable n
to store numbers
4) Find the last digit of n
5) Calculate the power of that lastDigit
with order i.e. pow(lastDigit, order)
6) Add the result into the sum
7) Remove the last digit
8) Repeat steps 4 to 7 until the number becomes 0
9) Compare sum value and the actual number
==> If both are the same then it is the Armstrong number of the given order
==> Else it is not Armstrong number of the given order
Java method to check Armstrong number of order N
public static boolean isArmstrong(int number, int order){
// declare variables
int lastDigit = 0;
int power = 0;
int sum = 0;
// temporary variable to store number
int n = number;
while(n!=0) {
// find last digit
lastDigit = n % 10;
// find power of digit
power = (int) Math.pow(lastDigit, order);
// add power value into sum
sum += power;
// remove last digit
n /= 10;
}
if(sum == number) return true;
else return false;
}
In this method to find the power, we take the support of the pow()
, which is defined in the Math class. The pow()
is a static method so we can call it without creating an object of the Math class, and it returns double so we need to use type casting it to int type.
Learn to code from industry experts! Enroll here
Java program for Armstrong number between 1 to 1000
We can also find all Armstrong numbers of a given order in the given range. For this purpose, we need to take the minimum, and maximum values of the range and order to check the Armstrong number.
import java.util.Scanner;
public class ArmstrongNumberInRange {
public static boolean isArmstrong(int number, int order){
// declare variables
int lastDigit = 0;
int power = 0;
int sum = 0;
// temporary variable to store number
int n = number;
while(n!=0) {
// find last digit
lastDigit = n % 10;
// find power of digit
power = (int) Math.pow(lastDigit, order);
// add power value into sum
sum += power;
// remove last digit
n /= 10;
}
if(sum == number) return true;
else return false;
}
public static void main(String[] args) {
// declare variables
int minRange , maxRange;
int order = 0;
// create Scanner class object
Scanner scan = new Scanner(System.in);
// read inputs
System.out.print("Enter min & max "+
"Range value:: ");
minRange = scan.nextInt();
maxRange = scan.nextInt();
System.out.print("Enter order to check::");
order = scan.nextInt();
// check in range
System.out.println("Armstrong numbers"+
" from "+minRange+" to "+maxRange+
" of order " +order+" is:: ");
for(int i = minRange; i<= maxRange; i++)
if(isArmstrong(i, order))
System.out.print( i + " ");
// close Scanner class object
scan.close();
}
}
The output for different test-cases :-
Enter min and max Range value: 1 1000
Enter an order to check: 3
Armstrong numbers from 1 to 1000 of order 3 is:
1 152 370 371 407
Enter min and max Range value: 1 10000
Enter an order to check: 5
Armstrong numbers from 1 to 10000 of order 5 is:
1 4150 4151