Números não tão bons

A população de um número positivo é a soma dos 1 em sua representação binária.

  • Um número evil tem uma população par.
  • Um número odious tem uma população ímpar.
  • Um número é pernicious se sua população é um número primo.

Crie uma função que receba um número como argumento e retorne um array ordenado com todos os seus descritores ("Evil", "Odious" ou "Pernicious").

Exemplos

how_bad(7) ➞ ["Odious", "Pernicious"]
# 7 in binary is "111".
# 1 + 1 + 1 = 3 in "111" means "Odious" should be added to the array answer.
# 3 is a prime number, meaning "Pernicious" should also be added.

how_bad(17) ➞ ["Evil", "Pernicious"]
# 17 in binary is "10001".
# 1 + 1 = 2 in "10001" means "Evil" should be added to the array answer.
# 2 is a prime number, meaning "Pernicious" should also be added.

how_bad(23) ➞ ["Evil"]
# 23 in binary is "10111".
# Four 1's in "10111" means "Evil" should be added to the array answer.
# 4 is not a prime number, meaning "Pernicious" should not be added.

Observações

N/A