Armstrong Number Program in Java

In this section, we will explore the concept of Armstrong numbers and develop Java programs to determine whether a given number qualifies as an Armstrong number or not. The Armstrong number program is commonly encountered in Java coding interviews and academic settings, making it an important topic to understand and practice.

Armstrong Number in Java

An Armstrong number, also referred to as a pluperfect number, plus perfect number, or narcissistic number, is a positive integer with m digits that satisfies the condition of being equal to the sum of the mth powers of its digits. The concept of Armstrong numbers is captured by the OEIS sequence A005188. To better comprehend this concept, let’s delve into an illustrative example.

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

Within the range of 0 to 999, several Armstrong numbers can be identified. These numbers possess the unique property of being equal to the sum of the individual digits raised to the power of the total number of digits. The first few Armstrong numbers within this range include 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, and 407. Moreover, there are additional Armstrong numbers such as 1634, 8208, 9474, 54748, 92727, 93084, 548834, 1741725, 4210818, 9800817, 9926315, 24678050, 24678051, 88593477, 146511208, 472335975, 534494836, 912985153, 4679307774, 32164049650, and 32164049651. These numbers exhibit the intriguing property of Armstrong numbers.

Armstrong Number Java Program in Java

Below is a Java program that generates and prints all the Armstrong numbers up to a given limit. The program is designed to identify and display numbers that satisfy the Armstrong number property.

Program:

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 verifies whether a given number qualifies as an Armstrong number or not. This program focuses on a single number input and determines its Armstrong number status.

Program:

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

We hope you have gained a clear understanding of the Armstrong Number Program in Java. For further exploration, you can visit tutorials.freshersnow.com.