Java >> Tutoriel Java >  >> Java

Programme Evil Number en Java

Dans cet article, nous développerons un programme Java pour vérifier si le nombre donné est un nombre mauvais ou non. Nous développerons également un programme Java pour trouver tous les mauvais nombres dans une plage donnée.

Un nombre maléfique est un nombre entier positif qui a un nombre pair de 1 dans son équivalent binaire. Exemple :L'équivalent binaire de 9 est 1001, et 1001 contient des nombres pairs de 1, donc 9 est un nombre mauvais.

Procédure pour vérifier que le nombre donné est un mauvais nombre ou non
1) Prendre un nombre
2) Trouver son équivalent binaire, et le stocker dans une variable "binaire"
3) Compter le nombre de 1 dans le binaire
4) Si le nombre de 1 est pair alors c'est un mauvais nombre sinon le nombre donné n'est pas un mauvais nombre.

Nous pouvons convertir manuellement un nombre décimal en nombre binaire ou utiliser la méthode intégrée toBinaryString().

Le premier programme que nous développerons en convertissant manuellement un nombre décimal en nombre binaire en utilisant des boucles, puis le deuxième programme sera développé en utilisant la méthode toBinaryString().

import java.util.Scanner;

public class EvilNumber {

   // method to check evil number
   public static boolean isEvil(int number) {

      // convert number into binary equivalent
      long binary = toBinary(number);

      // count number of 1's in binary number
      int count = 0;
      // iterate each digit of binary number
      while(binary!=0) {

         // check last digit is 1
         if(binary%10 == 1) 
         count++;

         // remove last digit
         binary /= 10;
      }

      // check number of 1's
      if(count%2 == 0)
      return true;

      // else return false
      return false;
   }

   private static long toBinary(int decimal) {
      long binary = 0;
      int remainder = 0;
      int i = 1;
      while(decimal != 0) {
         remainder = decimal % 2;
         binary += remainder * i;
         decimal /= 2;
         i *= 10;
      }
      return binary;
   }

   public static void main(String[] args) {
      // declare variables
      int number = 0;

      // read the input 
      Scanner scan =  new Scanner(System.in);
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check the number is evil number or not
      if(isEvil(number))
      System.out.println(number+" is an"
		    	+ " evil number");
      else
      System.out.println(number+" is not an"
	      	  	+ " evil number");

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

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

Entrez un nombre entier ::2
2 n'est pas un mauvais nombre

Entrez un nombre entier ::3
3 est un nombre maléfique

Entrez un nombre entier ::9
9 est un nombre maléfique

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

Utilisation de la méthode toBinaryString()

Pour convertir le nombre décimal en nombre binaire, nous pouvons également utiliser la méthode toBinaryString() de la classe Integer. Le prototype de la méthode toBinaryString() est :-

public static String toBinaryString(int i)

C'est une méthode statique de la classe Integer donc pas besoin de créer l'objet de la classe Integer. Nous pouvons y accéder directement en appelant via le nom de la classe comme Integer.toBinaryString().

Elle renvoie une représentation sous forme de chaîne de l'argument entier sous la forme d'un entier non signé en base 2. La valeur entière non signée est l'argument plus 2^32 si l'argument est négatif; sinon, il est égal à l'argument. Cette valeur est convertie en une chaîne de chiffres ASCII en binaire (base 2) sans 0 supplémentaires. La valeur de l'argument peut être récupérée à partir de la chaîne renvoyée s en appelant Integer.parseUnsignedInt(s, 2).

import java.util.Scanner;

public class EvilNumber {

   // method to check evil number using String
   public static boolean isEvil(int number) {

      // convert number into binary equivalent,
      // toBinaryString() method is given to 
      // convert decimal to binary
      String binary = Integer.toBinaryString(number);

      // count number of 1's
      int count = 0;

      // iterate each character of String
      for(int i=0; i<binary.length(); i++) {
         // check each character is 1 or not
         if(binary.charAt(i) == '1') 
         count++;
      }

      // check number of 1's
      if(count%2 == 0)
      return true;

      // else return false
      return false;
   }

   public static void main(String[] args) {

      // declare variables
      int number = 0;

      // read the input 
      Scanner scan =  new Scanner(System.in);
      System.out.print("Enter an integer number:: ");
      number = scan.nextInt();

      // check the number is evil number or not
      if(isEvil(number))
      System.out.println(number+" is an"
	    		+ " evil number");
      else
      System.out.println(number+" is not an"
     	  		+ " evil number");

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

Programme Java pour trouver tous les nombres Evil dans une plage donnée

Nous pouvons également trouver tous les mauvais nombres qui existent dans la plage donnée. Pour cela, nous devons prendre l'aide d'une boucle. Vous pouvez convertir décimal en binaire manuellement ou vous pouvez vous aider de la méthode toBinaryString().

import java.util.Scanner;

public class EvilNumberInRange {

   // method to check evil number using String
   public static boolean isEvil(int number) {

      // convert number into binary equivalent,
      // toBinaryString() method is given to 
      // convert decimal to binary
      String binary = Integer.toBinaryString(number);

      // count number of 1's
      int count = 0;
      // iterate each character of String
      for(int i=0; i<binary.length(); i++) {

         // check each character is 1 or not
	 if(binary.charAt(i) == '1') 
	 count++;
      }

      // check number of 1's
      if(count%2 == 0)
      return true;

      // else return false
      return false;
   }

   public static void main(String[] args) {

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

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

      // read inputs
      System.out.print("Enter min value of range:: ");
      minRange = scan.nextInt();
      System.out.print("Enter max value of range:: ");
      maxRange = scan.nextInt();

      // find all Evil numbers 
      System.out.println("The evil numbers from "+
		minRange+" to "+ maxRange+" are:: ");

      for(int i=minRange; i<=maxRange; i++) {
         if(isEvil(i))
	 System.out.print(i+" ");
      }

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

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

Entrez la valeur min de la plage ::1
Entrez la valeur max de la plage ::50
Les mauvais nombres de 1 à 50 sont ::
3 5 6 9 10 12 15 17 18 20 23 24 27 29 30 33 34 36 39 40 43 45 46 48

Entrez la valeur minimale de la plage ::50
Entrez la valeur maximale de la plage ::100
Les mauvais nombres de 50 à 100 sont : :
51 53 54 57 58 60 63 65 66 68 71 72 75 77 78 80 83 85 86 89 90 92 95 96 99


Balise Java