Header Ads

How To Calculate Armstrong Number In Java Using Recursion

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.

My objective is to find out all the Armstrong Number between 1-999.
The main method goes like---
public static void main(String[] args) 
{
// TODO Auto-generated method stub
ArmstrongNumber a=new ArmstrongNumber();
for(int i=0;i<999;i++)
{
if(isarmstrong(i,(a.getNumber(i,0))))
{
//getNumber method will take the number and pass the initial result as 0 
//to the called function
System.out.println("The Armstrong number" +i);
//printing the armstrong number
}
}
}
This method will check if the number is really Armstrong Number

public static boolean isarmstrong(int mainnumber,int calculatedval)
{
// this method will check if the input number and calculated value according 
//to armstrong number are same. 
if(mainnumber==calculatedval)
return true;
// return true if both are same
else
return false; 
//return false if both are unequal
} 



This method will return the cube of the a given number
public int cube(int a)
{
// taking a number and returning the cube of it
return a*a*a;
}
This is method which will do the main job for us. This methods will be called over and over to get the corresponding digits and their cube

public int getNumber(int a,int result1)
//this method will take a number and some result as parameter
{
int result = result1;
int b;
b=a/10;
//diving the number by 10
int c=a%10;
//getting the remainder 
if(b>0)
// checking if the remaining part is greater than 0 
{   
  result=result+ cube(c);
  //getting the cube of the remainder
 if(b>=10)
// checking if the remaining part is greater than 10 
{
   result=getNumber(b,result);
//calling the same function with the remaining part of 
//the number after division by 10 and result
}
else
{
//if the result after divided by 10 is less than 10 then making cube of the 
//last digit
result= result +cube(b);
}
}
else
{
result=result+ cube(c);
//getting the cube of the remainder
}
return result;
// returning the result
}

The entire code goes like-

public class ArmstrongNumber {
  int result=0;
 /**
  * @param args
  */
 public static void main(String[] args) 
 {
  // TODO Auto-generated method stub
  ArmstrongNumber a=new ArmstrongNumber();
  
  for(int i=0;i<999;i++)
  {
  if(isarmstrong(i,(a.getNumber(i,0))))
  {
   //getNumber method will take the number and pass the 
//initial result as 0 to the called function
  System.out.println("The Armstrong number" +i);
  //printing the armstrong number
  }
  }
 }
 public static boolean isarmstrong(int mainnumber,int calculatedval)
 {
// this method will check if the input number and calculated 
//value according to armstrong number are same. 
  if(mainnumber==calculatedval)
  return true;
  // return true if both are same
  else
  return false; 
  //return false if both are unequal
 }
 public int cube(int a)
 {
  // taking a number and returning the cube of it
  return a*a*a;
 }
 public int getNumber(int a,int result1)
 //this method will take a number and some result as parameter
 {
  int result = result1;
  int b;
  b=a/10;
  //diving the number by 10
  int c=a%10;
  //getting the remainder 
  if(b>0)
  // checking if the remaining part is greater than 0 
  {   
     result=result cube(c);
     //getting the cube of the remainder
    if(b>=10)
// checking if the remaining part is greater than 10 
    {
       result=getNumber(b,result);
//calling the same function with the remaining part of the number 
//after division by 10 and result
    }
    else
    {
 //if the result after divided by 10 is less than 10 then making
// cube of the last digit
    result= result +cube(b);
    }
  }
  else
  {
   result=result +cube(c);
   //getting the cube of the remainder
  }
    return result;
    // returning the result
 }
}


We are done...

The output??

The Armstrong number0
The Armstrong number1
The Armstrong number153
The Armstrong number370
The Armstrong number371
The Armstrong number407



Powered by Blogger.