Java >> Java tutorial >  >> Java

Disarium nummer i Java

I dette indlæg vil vi udvikle et Java-program for at kontrollere, om det givne nummer er et Disarium-nummer eller ej? Vi vil også udvikle et Java-program til at finde alle Disarium-numrene i det givne område.

Et tal, hvis sum af dets cifre med deres respektive position er lig med det oprindelige tal, kaldes disariumnummer. Eksempler på disariumnumre er 135, 175, 518 og osv.

Tal =89 => 8 1 + 9 2 =8 + 81 =89 Så 89 er et disariumtal. Number =135 => 1 1 + 3 2 + 5 3 =1 + 9 + 125 =135 Derfor er 135 et disariumtal. Tal =518 => 5 1 + 1 2 + 8 3 =5 + 1+ 512 =518 Så 518 er et disarium-tal.

Fremgangsmåde for at udvikle en metode til at kontrollere, at det givne nummer er disariumnummer eller ej,

1) Tag et tal
2) Gem en kopi af nummeret i en midlertidig variabel
3) Angiv en sum variabel og initialiser den med 0
4) Deklarer en variabel digits for at gemme antallet af cifre i det givne nummer
5) Find antallet af cifre i det givne nummer, og gem resultaterne i digits variabel
6) Find det sidste ciffer i tallet
7) Beregn lastDigit^digits og føj den til sumvariablen
8) Fjern det sidste ciffer fra tallet
9) Reducer digits variabel med 1
10) Gentag 6 til 9 trin, indtil tallet bliver 0.
11) Sammenlign sum og original number . hvis begge er ens, er det givne nummer disariumnummer, ellers er det givne nummer ikke et disariumnummer.

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;

         // add result into sum
         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();
   }
}

Outputtet for forskellige testcases er:-

Indtast et heltal::135
135 er et Disarium-nummer.

Indtast et heltal::140
140 er ikke et Disarium-nummer.

Indtast et heltal::175
175 er et Disarium-nummer.

Se også:- Specialnummer, Magisk nummer, Armstrong-nummer, Perfekt nummer, Evil Number, Spionnummer, Sunny-nummer i Java

IsDisarium(-)-metoden kan også udvikles ved at bruge for loop. Nedenstående metode er udviklet ved at bruge 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 til at finde alle Disarium-numre i det givne område

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();
    }
}

Outputtet for de forskellige testcases er:-

Indtast minimum værdi af interval:1
Indtast maximum værdi af interval:1000
Disarium-nummeret fra 1 til 1000 er:
1 2 3 4 5 6 7 8 9 89 135 175 518 598

Indtast minimum værdi af interval:1000
Indtast maximum værdi af interval:10000
Disarium-nummeret fra 1000 til 10000 er:
1306 1676 2427


Java tag