# Disarium Number in Java

In this post we will develop a Java program to check whether the given number is a Disarium number or not? We will also develop a Java program to find all the Disarium numbers in the given range.

A number whose sum of its digits powered with their respective position is equal to the original number is called disarium number. Examples of disarium numbers are- 135, 175, 518 and e.tc.

Number = 89 => 81 + 92 = 8 + 81 = 89 So, 89 is a disarium number. `Number` = 135 => 11 + 32 + 53 = 1 + 9 + 125 = 135 Hence 135 is a disarium number. Number = 518 => 51 + 12 + 83 = 5 + 1+ 512 = 518 So, 518 is a disarium number.

Procedure to develop a method to check the given number is disarium number or not,

1) Take a number
2) Store a copy of the number in a temporary variable
3) Declare a `sum` variable and initialize it with `0`
4) Declare a variable `digits` to store the number of digits in the given number
5) Find the number of digits in the given number, and store results in the `digits` variable
6) Find the last digit of the number
7) Calculate` lastDigit^digits` and add it to the sum variable
8) Remove the last digit from the number
9) Decrease `digits` variable by 1
10) Repeat 6 to 9 steps until the number becomes 0.
11) Compare `sum` and the `original number`. if both are the same then the given number is disarium number else the given number is not a disarium number.

## Program

``````import java.util.Scanner;

public class DisariumNumber {

// method to check the Disarium number
public static boolean isDisarium(int number){

// declare variables
int n = number; // temp variable
int sum = 0;
int digits = 0; // number of digits
int lastDigit = 0;

// calculate number of digits
digits = countDigits(number);

// iterate all digits of number
while(n!=0) {

// find last digit
lastDigit = n % 10;

sum += (int)Math.pow(lastDigit, digits);

// remove last digit
n /= 10;

// decrease digits variable by 1
digits--;
}

if(sum == number)
return true;

return false;
}

// method to count number of digits
public static int countDigits(int number) {

int number_of_digits = 0;
while(number != 0) {

number_of_digits++;
// remove last digit
number /= 10;
}

return number_of_digits;
}

// main method
public static void main(String[] args) {

// declare variables
int number = 0;
boolean result = false;

//create Scanner class object to take input
Scanner scan = new Scanner(System.in);

// take input from end-user
System.out.print("Enter an integer number::");
number = scan.nextInt();

// check number is Disarium number or not
result = isDisarium(number);

// display result
if(result)
System.out.println(number +
" is a Disarium number.");
else
System.out.println(number +
" is not a Disarium number.");

// close Scanner class object
scan.close();
}
}``````

The output for different test-cases are:-

Enter an integer number::135
135 is a Disarium number.

Enter an integer number::140
140 is not a Disarium number.

Enter an integer number::175
175 is a Disarium number.

The isDisarium(-) method also can be developed by using for loop. The below method is developed by using for loop.

``````public static boolean isDisarium(int number) {

// declare variables
int n = number; // temp variable
int sum = 0;

// count number of digits
int digits = countDigits(number);

// iterate through all digits of number
for(int i=digits; n!=0; n/=10, i--) {

// find last digit and
// add into the sum variable
sum += (int)Math.pow((n%10),i);
}

// compare sum and product
if(sum == number)
return true;

return false;
}``````

## Java program to find all Disarium number in the given range

``````import java.util.Scanner;

public class DisariumNumberInRange {

// method to check the Disarium number
public static boolean isDisarium(int number) {

// declare variables
int n = number; // temp variable
int sum = 0;

// count number of digits
int digits = countDigits(number);

// iterate through all digits of number
for(int i=digits; n!=0; n/=10, i--) {

// find last digit and
// add into the sum variable
sum += (int)Math.pow((n%10),i);
}

// compare sum and product
if(sum == number)
return true;

return false;
}

public static int countDigits(int number) {
int number_of_digits = 0;
while(number != 0) {
number_of_digits++;
// remove last digit
number /= 10;
}
return number_of_digits;
}

// main method
public static void main(String[] args) {

// declare variables
int minRange = 0, maxRange = 0;

//create Scanner class object to take input
Scanner scan = new Scanner(System.in);
System.out.print("Enter minimum value of range:");
minRange = scan.nextInt();
System.out.print("Enter maximum value of range:");
maxRange = scan.nextInt();

// loop
System.out.println("The Disarium number from "+
minRange + " to "+ maxRange+" are: ");

for(int i=minRange; i<=maxRange; i++) {
// check number
if(isDisarium(i))
System.out.print(i +" ");
}

// close Scanner class object
scan.close();
}
}``````

The output for the different test-cases are:-

Enter `minimum` value of range:1
Enter `maximum` value of range:1000
The Disarium number from 1 to 1000 are:
`1 2 3 4 5 6 7 8 9 89 135 175 518 598`

Enter `minimum` value of range:1000
Enter `maximum` value of range:10000
The Disarium number from 1000 to 10000 are:
`1306 1676 2427`

If you enjoyed this post, share it with your friends. Do you want to share more information about the topic discussed above or you find anything incorrect? Let us know in the comments. Thank you!