How To Check Whether a Number is a Evil Number or Not in Java?


A number is said to be an Evil number, if the number of 1’s present in the binary conversion of the given number is even.

For more clarification, we have to first convert the given number into binary number. After converting we have to calculate how many ones are present. If the numbers of 1’s is even times then we can say the given number is an Evil number. If the numbers of 1’s is odd times then we can say the given number is an Odious number.

In this article we will see how to check if a number is evil by using Java programming language.

To show you some instances

Instance-1

Input number is 20

Let’s check it by using the logic of Evil number

The binary of 20 is = 10100

Numbers of one’s present= 2.

As we notice here we got an even number

Hence, 20 is an Evil number

Instance-2

Input number is 55.

Let’s check it by using the logic of Evil number

The binary of 55 is = 110111

Numbers of one’s present= 5.

As we notice here we got an odd number.

Hence, 55 is not an Evil number.

Instance-3

Input number is 112.

Let’s check it by using the logic of Evil number.

The binary of 112 is = 1110000

Numbers of one’s present= 3.

As we notice here we got an odd number.

Hence, 112 is not an Evil number.

Some other examples of evil numbers include 0, 3, 5, 6, 9, 10, 12, 15, 17, 18, 20, 23, 24, 27, 29, ..., and so on.

  • Step 1 − Get an integer number either by initialization or by user input.

  • Step 2 − First convert the input number to binary number and store it into a variable.

  • Step 3 − Then take a loop till the binary number is equal to zero.

  • Step 4 − In every iteration, we are checking whether the unit place in 1 or not and after counting we are removing the unit place number as well.

  • Step 5 − Finally, whatever the count value we got, check whether that number is an even number or odd.

  • Step 6 − If even then we conclude that the number is an evil number otherwise the number is not an evil number.

Multiple Approaches

We have provided the solution in different approaches

  • By Using Static Input Value

  • By Using User Defined Method

Let’s see the program along with its output one by one.

Approach-1: By Using Static Input Value

In this approach one integer value will be initialized in the program and then by using the algorithm we can check whether a number is a an evil number or not.

Example

import java.util.*; import java.io.*; public class Main{ //main method public static void main(String[] args){ //declare a variable whcih store the static input int inputNumber = 15; //declare other variables for calculations long binaryOfInputNumber = 0; int temp= inputNumber; int reminder = 0; int i = 1; //binary conversion while(temp != 0){ //find the unit place number reminder = temp % 2; binaryOfInputNumber += reminder * i; temp = temp / 2; i = i * 10; } // for counting the number of 1's we declare a variable int count = 0; //take a loop with a condition till the value is zero while(binaryOfInputNumber != 0){ // check whether the unit place consisting 1 or not if(binaryOfInputNumber % 10 == 1) //increment the count value count++; // after counting removing the unit place in each iteration binaryOfInputNumber = binaryOfInputNumber / 10; } // conditon for checking the count value is even or odd // If even then the number is an evil number otherwise not if(count % 2 == 0) //return true if satisfied System.out.println(inputNumber + " is an evil number"); //return false if not satisfied else System.out.println(inputNumber + " is not an evil number"); } }

Output

15 is an evil number

Approach-2: By Using User Defined

In this approach, the user will be asked to enter the input number and pass this number as parameter in a user defined method then inside the method by using the algorithm we can check whether the number is an evil number or not.

Example

public class Main { //main method public static void main(String[] args){ //initialize input value int num = 56; System.out.println("Enter a number : "+num); //pass the input value into our user defined method //if its return true then it's an evil number if(checkEvil(num)) System.out.println(num + " is an evil number"); else System.out.println(num + " is not an evil number"); } //define the user defined method public static boolean checkEvil(int inputNumber){ //convert number to binary //the method return a string value String str = Integer.toBinaryString(inputNumber); //type casting string to Integer //store it into a variable long binaryOfInputNumber= Long.parseLong(str); // for counting the number of 1's we declare a variable int count = 0; //binary conversion while(binaryOfInputNumber != 0){ // check whether the unit place consisting 1 or not if(binaryOfInputNumber % 10 == 1) //increment the count value count++; // after counting removing the unit place in each iteration binaryOfInputNumber = binaryOfInputNumber / 10; } // conditon for checking the count value is even or odd if(count % 2 == 0) //return true if satisfied return true; //return false if not satisfied return false; } }

Output

Enter a number : 56
56 is not an evil number

In this article, we explored how to check a number whether it is an evil number or not in Java by using three different approaches.

Updated on: 27-Oct-2022

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements