What is the Armstrong Number in Java? It’s Prerequisites and Algorithm
Updated on Oct 14, 2022 | 6 min read | 7.3k views
Share:
For working professionals
For fresh graduates
More
Updated on Oct 14, 2022 | 6 min read | 7.3k views
Share:
Table of Contents
A given number x is called an Armstrong number of order n if its equal to sum of its digits raised to power n, i.e:
abc= pow(a,n) + pow(b,n) + pow(c,n)
A positive integer of n digits is an Armstrong number (of order 3) if it is equal to the sum of cubes of its digits. For example:
Input: 153
Output: Yes
1*1*1 + 5*5*5 + 3*3*3 = 153
Thus, 153 is an Armstrong number
Input: 121
Output: No
1*1*1 + 2*2*2 + 1*1*1 = 10
Thus, 120 is not a Armstrong number.
In this article, we will learn to check whether an input number is an Armstrong number or not. For this, we will be using a while loop and for loop in Java. To understand this program, we need knowledge of the following topics in Java:
Algorithm:
If sum != X, print not Armstrong number
1. Armstrong number in Java of order 3
Code:
public class Armstrong{
public static void main(String[] args) {
int x=0,a,temp;
int n=153;//It is the number to check Armstrong
temp=n;
while(n>0)
{
a=n%10;
n=n/10;
x=x+(a*a*a);
}
if(temp==x)
System.out.println(“Armstrong number”);
else
System.out.println(“Not Armstrong number”);
}
}
Output:
Explanation
First, a given number N’s value is stored in another integer variable, x. This is done as we need to compare the values of the original number and the final number at the end. A while loop is used to lop through the number N until it is equal to 0. With every iteration, the last digit of N is stored in a.
Then the result is computed by cubing a or using Math. pow() and adding it to x. When the last digit is removed from N, it is divided by 10. Finally =, temp and X are compared. If they are equal, it’s an Armstrong number. Otherwise, it isn’t.
2. Armstrong number in Java of order n
Code:
public class Armstrong
{
/* Function to calculate a raised to the
power b */
int power(int a, long b)
{
if( b == 0)
return 1;
if (b%2 == 0)
return power(a, b/2)*power(a, b/2);
return a*power(a, b/2)*power(a, b/2);
}
/* Function to calculate order of the number */
int order(int a)
{
int n = 0;
while (a != 0)
{
n++;
a = a/10;
}
return n;
}
// Function to check whether the given number is Armstrong number or not
boolean Armstrong (int a)
{
// Calling the order function
int n = order(a);
int temp=a, sum=0;
while (temp!=0)
{
int r = temp%10;
sum = sum + power(r,n);
temp = temp/10;
}
// If it satisfies Armstrong condition
return (sum == a);
}
// Driver Program
public static void main(String[] args)
{
Armstrong obj = new Armstrong();
int a = 153;
System.out.println(obj.isArmstrong(a));
a = 1276;
System.out.println(obj.isArmstrong(a));
}
}
Output:
Explanation
In this program, instead of a while loop, we have used recursion. The first function is used to calculate a number a raised to power b. Math.pow(a,b) can also be used for the same. The second function checks the order of the number, like, 153 is of order 3. Finally, a Boolean function Armstrong is used to return if the number is Armstrong or not. Then an object of the Armstrong class is used to call the functions.
Code:
public class Armstrong
{
public static void main(String[] arg)
{
int i=0,x;
System.out.println(“Armstrong numbers between 0 to 999”);
while(i<1000)
{
x=armstrongOrNot(i);
if(x==i)
System.out.println(i);
i++;
}
}
static int armstrongOrNot(int n)
{
int c,a=0;
while(n!=0)
{
c=n%10;
a=a+(c*c*c);
n/=10 ;
}
return a;
}
}
Output:
Explanation: In this program, each number between the given interval low and high, are checked. Post each check, the sum and number of digits are restored to 0.
In this article, we covered an Armstrong number in java in detail. We saw how to check if a number is an Armstrong number of order n and order 3. We also saw how you could get all the Armstrong numbers between a lower and upper bound.
If you wish to improve your Java skills, you need to get your hands on these java projects. If you’re interested to learn more about Java, full-stack development, check out upGrad & IIIT-B’s Executive PG Program in Full-stack Software Development which is designed for working professionals and offers 500+ hours of rigorous training, 9+ projects, and assignments, IIIT-B Alumni status, practical hands-on capstone projects & job assistance with top firms.
If you are looking to learn more about Java and move up in your technical career, then explore free Java online course by India’s largest online higher education company, upGrad. Contact us for more details.
Get Free Consultation
By submitting, I accept the T&C and
Privacy Policy
Top Resources