# Evil Number

• Difficulty Level : Basic
• Last Updated : 26 Apr, 2022

An evil number is a non-negative number that has an even number of 1s in its binary expansion. (Binary Expansion – is representation of a number in the binary numeral system or base-2 numeral system which represents numeric values using two different symbols: typically 0 (zero) and 1 (one)).

Odious Numbers: Numbers that are not Evil are called Odious Numbers. Given a number, the task is to check if it is Evil Number or Odious Numbers.

Examples :

```Input : 3
Output : Evil Number
Explanation: Binary expansion of 3 is 11,
the number of 1s in this is 2 i.e even.

Input : 16
Output : Odious Number(not an evil number)
Explanation: Binary expansion of 16 = 10000,
having number of 1s =1 i.e odd.

Input : 23
Output : Evil Number
Explanation: Binary expansion of 23 is 10111,
the number of 1s in this is 4 i.e even. ```

## C++

 `// C/C++ program to check if a number is` `// Evil number or Odious Number` `#include ` `using` `namespace` `std;` `#include `   `// returns number of 1s from the binary number` `int` `count_one(``int` `n)` `{` `    ``int` `c_one = 0;` `    ``while` `(n != 0) {` `        ``int` `rem = n % 10;`   `        ``// counting 1s` `        ``if` `(rem == 1)` `            ``c_one = c_one + 1;` `        ``n = n / 10;` `    ``}` `    ``return` `c_one;` `}`   `// Check if number is evil or not` `int` `checkEvil(``int` `n)` `{` `    ``int` `i = 0, bin = 0, n_one = 0;`   `    ``// converting n to binary form` `    ``while` `(n != 0) {` `        ``// calculating remainder` `        ``int` `r = n % 2;`   `        ``// storing the remainders in binary` `        ``// form as a number` `        ``bin = bin + r * (``int``)(``pow``(10, i));` `        ``n = n / 2;` `    ``}`   `    ``// Calling the count_one function to count` `    ``// and return number of 1s in bin` `    ``n_one = count_one(bin);` `    ``if` `(n_one % 2 == 0)` `        ``return` `1;` `    ``else` `        ``return` `0;` `}`   `// Driver Code` `int` `main(``void``)` `{` `    ``int` `i, check, num;` `    ``num = 32;` `    ``check = checkEvil(num);` `    ``if` `(check == 1)` `        ``cout << num << ``" is Evil Number\n"``;` `    ``else` `        ``cout << num << ``" is Odious Number\n"``;` `    ``return` `0;` `}`   `// This code is contributed by Nikita Tiwari.`

## Java

 `// Java program to check if a number is` `// Evil number or Odious Number`   `class` `GFG {` `    ``// returns number of 1s from the binary number` `    ``static` `int` `count_one(``int` `n)` `    ``{` `        ``int` `c_one = ``0``;` `        ``while` `(n != ``0``) {` `            ``int` `rem = n % ``10``;`   `            ``// counting 1s` `            ``if` `(rem == ``1``)` `                ``c_one = c_one + ``1``;` `            ``n = n / ``10``;` `        ``}` `        ``return` `c_one;` `    ``}`   `    ``// Check if number is evil or not` `    ``static` `int` `checkEvil(``int` `n)` `    ``{` `        ``int` `i = ``0``, bin = ``0``, n_one = ``0``;`   `        ``// converting n to binary form` `        ``while` `(n != ``0``) {` `            ``// calculating remainder` `            ``int` `r = n % ``2``;`   `            ``// storing the remainders in binary` `            ``// form as a number` `            ``bin = bin + r * (``int``)(Math.pow(``10``, i));` `            ``n = n / ``2``;` `        ``}`   `        ``// Calling the count_one function to count` `        ``// and return number of 1s in bin` `        ``n_one = count_one(bin);` `        ``if` `(n_one % ``2` `== ``0``)` `            ``return` `1``;` `        ``else` `            ``return` `0``;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `i, check, num;` `        ``num = ``32``;` `        ``check = checkEvil(num);` `        ``if` `(check == ``1``)` `            ``System.out.println(num + ``" is Evil Number"``);` `        ``else` `            ``System.out.println(num + ``" is Odious Number"``);` `    ``}` `}`   `/* This code is contributed by Mr. Somesh Awasthi */`

## Python3

 `# Python program to check if a number is ` `# Evil number or Odious number`   `# returns number of 1s from the binary number` `def` `count_one(n):` `    ``c_one ``=` `0` `    ``while` `n !``=` `0``:` `        ``rem ``=` `n ``%` `10` `        `  `        ``# Counting 1s` `        ``if` `rem ``=``=` `1``:` `            ``c_one ``=` `c_one ``+` `1` `        ``n ``=` `n ``/``/` `10` `        `  `    ``return` `c_one`   `# Check if number is evil or not` `def` `checkEvil(n):` `    ``i ``=` `0` `    ``binary ``=` `0` `    `  `    ``# Converting n to binary form` `    ``while` `n !``=` `0``:` `        ``r ``=` `n ``%` `2` `        ``# Calculating Remainder` `        ``# Storing the remainders in binary` `        ``# form as a number` `        ``binary ``=` `binary ``+` `r``*``(``int``(``10``*``*``i))` `        ``n ``=` `n ``/``/` `2` `        `  `    ``# Calling the count_one function to count` `    ``# and return number of 1s in bin` `    ``n_one ``=` `count_one(binary)` `    ``if` `n_one ``%` `2` `=``=` `0``:` `        ``return` `True` `    ``return` `False` `    `  `# Driver Code` `num ``=` `32` `check ``=` `checkEvil(num)` `if` `check:` `    ``print``(num, ``"is Evil Number"``)` `else``:` `    ``print` `(num, ``"is Odious Number"``)        ` `        `  `# Contributed by Harshit Agrawal        `

## C#

 `// C# program to check if a number is` `// Evil number or Odious Number` `using` `System;`   `class` `GFG {`   `    ``// Returns number of 1s from` `    ``// the binary number` `    ``static` `int` `count_one(``int` `n)` `    ``{` `        ``int` `c_one = 0;` `        ``while` `(n != 0) {` `            ``int` `rem = n % 10;`   `            ``// counting 1s` `            ``if` `(rem == 1)` `                ``c_one = c_one + 1;` `            ``n = n / 10;` `        ``}` `        ``return` `c_one;` `    ``}`   `    ``// Check if number is evil or not` `    ``static` `int` `checkEvil(``int` `n)` `    ``{` `        ``int` `i = 0, bin = 0, n_one = 0;`   `        ``// converting n to binary form` `        ``while` `(n != 0) {` `            ``// calculating remainder` `            ``int` `r = n % 2;`   `            ``// storing the remainders in` `            ``// binary form as a number` `            ``bin = bin + r * (``int``)(Math.Pow(10, i));` `            ``n = n / 2;` `        ``}`   `        ``// Calling the count_one function to count` `        ``// and return number of 1s in bin` `        ``n_one = count_one(bin);` `        ``if` `(n_one % 2 == 0)` `            ``return` `1;` `        ``else` `            ``return` `0;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `Main(String[] args)` `    ``{` `        ``int` `check, num;` `        ``num = 32;` `        ``check = checkEvil(num);` `        ``if` `(check == 1)` `            ``Console.WriteLine(num + ``" is Evil Number"``);` `        ``else` `            ``Console.WriteLine(num + ``" is Odious Number"``);` `    ``}` `}`   `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output :

`32 is Odious Number`

This article is contributed by Nikita Tiwari. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.