maths.special_numbers.evil_number

== Evil Number == An evil number is a non-negative integer that has an even number of 1s in its binary expansion. Numbers that are not evil are called odious numbers.

Examples of evil numbers: 0, 3, 5, 6, 9, 10, 12, 15, 17, 18, 20, 23, 24, 27, … Reference: https://en.wikipedia.org/wiki/Evil_number

Functions

is_evil_number(→ bool)

Check if a given number is an evil number.

Module Contents

maths.special_numbers.evil_number.is_evil_number(number: int) bool

Check if a given number is an evil number.

A non-negative integer is evil if the sum of its binary digits (its Hamming weight) is even.

Parameters:

number – A non-negative integer.

Returns:

True if number is an evil number, False otherwise.

>>> is_evil_number(0)
True
>>> is_evil_number(3)
True
>>> is_evil_number(5)
True
>>> is_evil_number(6)
True
>>> is_evil_number(9)
True
>>> is_evil_number(1)
False
>>> is_evil_number(2)
False
>>> is_evil_number(4)
False
>>> is_evil_number(7)
False
>>> is_evil_number(8)
False
>>> is_evil_number(-1)
Traceback (most recent call last):
    ...
ValueError: Input must be a non-negative integer
>>> is_evil_number(5.5)
Traceback (most recent call last):
    ...
TypeError: Input must be an integer