DEV Community

loading...
Cover image for Como saber se um número é par ou ímpar em JavaScript?

Como saber se um número é par ou ímpar em JavaScript?

Dedicio Coelho
・2 min read

As vezes é necessário saber, via programação, se um número é par ou ímpar. Mas como fazer isso em JavaScript?

Método 1

const isOddOrEven = (number) => {
  return number % 2 ? 'Is Odd!' : 'Is Even!';
}

console.log(isOddOrEven(3)); // Is Odd!
Enter fullscreen mode Exit fullscreen mode

Nesse método, testamos a divisão por 2 do número passado, usando o operador %, que em vez de retornar o resultado de uma divisão, ele retorna o resto.

Qual a sacada? Todos os números pares são divisíveis por 2, ou seja, o resto da divisão de um número par por 2 é sempre 0.

Então caso essa operação retorne algum valor acima de 0, o número passado é ímpar.

Método 2

const isOddOrEven = (number) => {
  return value & 1 ? 'Is Odd!' : 'Is Even!';
}

console.log(isOddOrEven(3)); // Is Odd!
Enter fullscreen mode Exit fullscreen mode

Nesse método, utilizando do operador &, que é um operador JavaScript da categoria bitwise ou "bit a bit".

Essa categoria trabalha com os valores no formato de base 2, ou seja, binários. Aquelas representações em 1s e 0s. (Ex: valor 5 em decimal é igual a 101 em binário)

Para operação to tipo bit a bit, o JavaScript converte por padrão todos os operandos para inteiros de 32 bits (Ex: 10100000000000000110000000000001)

Detalhe: caso o número convertido seja maior que 32 bits, os bits mais significativos são descartados, então não é recomendável usar operações bit a bit no JavaScript caso necessite usar números muito grandes, como cálculos com números primos.

Agora voltando a lógica do método...

O operador & retorna 1 para cada posição de bit em que ambos os operandos tinham um bit 1.

Qual a sacada? Estamos comparando ali os números com o número 1, que em binário seria 00000000000000000000000000000001, ou seja, apenas os números ímpares possuem o primeiro bit com valor 1, que é o único bit do número 1_(decimal)_ que também tem valor 1.

É isso!

São apenas dois métodos simples, mas o que eu queria passar aqui é a lógica de como resolver o problema de saber se um número é par ou ímpar.

Você também vai querer adicionar outras validações e muitos outros dilemas para deixar seu método super completo e a prova de quebra.

Mas o legal é entender como foram pensadas as lógicas para resolver problemas em programação, que podem ajudar na hora de resolver aquele seu problema de código que não é tão simples ou é muito específico ao contexto em que só você mexe.

Boa sorte!


Outros links:

Discussion (0)