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