Java >> Tutoriel Java >  >> Java

Nombre Disarium en Java

Dans cet article, nous allons développer un programme Java pour vérifier si le numéro donné est un numéro Disarium ou non ? Nous développerons également un programme Java pour trouver tous les numéros Disarium dans la plage donnée.

Un nombre dont la somme de ses chiffres alimentés par leur position respective est égale au nombre d'origine est appelé nombre disarium. Des exemples de numéros de disarium sont- 135, 175, 518 et e.tc.

Nombre =89 => 8 1 + 9 2 =8 + 81 =89 Donc, 89 est un nombre disarié. Number =135 => 1 1 + 3 2 + 5 3 =1 + 9 + 125 =135 Donc 135 est un nombre disarié. Nombre =518 => 5 1 + 1 2 + 8 3 =5 + 1+ 512 =518 Donc, 518 est un nombre disarié.

Procédure pour développer une méthode pour vérifier que le nombre donné est un nombre disarié ou non,

1) Prendre un nombre
2) Stocker une copie du nombre dans une variable temporaire
3) Déclarer un sum variable et initialisez-la avec 0
4) Déclarer une variable digits pour stocker le nombre de chiffres dans le nombre donné
5) Trouver le nombre de chiffres dans le nombre donné et stocker les résultats dans le digits variable
6) Trouvez le dernier chiffre du nombre
7) Calculez lastDigit^digits et ajoutez-le à la variable somme
8) Supprimez le dernier chiffre du nombre
9) Diminuez digits variable par 1
10) Répétez 6 à 9 étapes jusqu'à ce que le nombre devienne 0.
11) Comparez sum et le original number . si les deux sont identiques, le nombre donné est un nombre disarium, sinon le nombre donné n'est pas un nombre disarium.

Programme

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

La sortie pour différents cas de test est :-

Entrez un nombre entier ::135
135 est un nombre Disarium.

Entrez un nombre entier ::140
140 n'est pas un nombre Disarium.

Entrez un nombre entier ::175
175 est un nombre Disarium.

Voir également :- Numéro spécial, Numéro magique, Numéro Armstrong, Numéro parfait, Numéro maléfique, Numéro espion, Numéro ensoleillé en Java

La méthode isDisarium(-) peut également être développée en utilisant la boucle for. La méthode ci-dessous est développée en utilisant la boucle for.

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

Programme Java pour trouver tous les numéros Disarium dans la plage donnée

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

La sortie pour les différents cas de test est :-

Entrez minimum valeur de la plage : 1
Entrez maximum value of range :1000
Le nombre Disarium de 1 à 1000 est :
1 2 3 4 5 6 7 8 9 89 135 175 518 598

Entrez minimum valeur de la plage :1000
Entrez maximum valeur de la plage :10000
Le nombre Disarium de 1000 à 10000 est :
1306 1676 2427


Balise Java