Introdução
Saber se um número é par ou ímpar pode parecer uma tarefa trivial — e de fato é. Mas em ambientes de produção, trivialidade mal implementada vira bug silencioso.
Neste post, vamos abordar a verificação de paridade de forma matemática, técnica e segura, como deve ser em um projeto sério.
Definição Matemática
Um número inteiro n
é:
- Par, se existe um inteiro
k
tal quen = 2k
- Ímpar, se existe um inteiro
k
tal quen = 2k + 1
Em PHP (e em praticamente todas as linguagens), usamos o operador módulo %
para obter o resto da divisão.
Verificando se um número é par ou ímpar em PHP
Código direto:
function isPar($n) {
return $n % 2 === 0;
}
function isImpar($n) {
return $n % 2 !== 0;
}
Exemplo prático:
$numero = 42;
if (isPar($numero)) {
echo "$numero é par";
} else {
echo "$numero é ímpar";
}
E se o número for negativo?
Funciona do mesmo jeito.
echo -3 % 2; // Resultado: -1
O -3
é ímpar, e a verificação funciona sem alterações.
E se for um número float?
$numero = 10.5;
echo $numero % 2; // Fatal error (PHP < 8.0) ou Warning
A partir do PHP 8, floats no %
são permitidos, mas isso não faz sentido em lógica de paridade. Então, garanta que o número seja inteiro:
function isParSeguro($n) {
if (!is_int($n)) {
return false; // ou lançar Exception
}
return $n % 2 === 0;
}
E se for uma string com número?
$numero = "8";
echo $numero % 2; // Funciona! PHP converte automaticamente para inteiro
Mas não é boa prática confiar nisso. Tipagem importa.
function isParEstrito($n) {
if (!is_numeric($n) || (int)$n != $n) {
return false;
}
return ((int)$n % 2) === 0;
}
Benchmarks (simples)
$start = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
$r = ($i % 2 === 0);
}
echo "Tempo: " . (microtime(true) - $start);
Resultado em uma máquina comum: aproximadamente 0.05 segundos para 1 milhão de verificações. É extremamente rápido e pode ser usado em tempo real sem preocupações.
Boas Práticas
- Sempre verifique o tipo de entrada, especialmente se o dado vier do usuário
- Considere criar funções reutilizáveis como
isPar()
eisImpar()
- Se o número for
float
, decida se deve truncar, arredondar ou rejeitar
Validação Completa (Função final)
function isParRobusto($n) {
if (!is_numeric($n)) return false;
if ((int)$n != $n) return false;
return ((int)$n % 2) === 0;
}
Conclusão
Verificar se um número é par ou ímpar em PHP não precisa ser só um if
simples. Ao lidar com inputs dinâmicos, banco de dados, APIs ou interfaces públicas, você precisa ser rigoroso.
Trate como um profissional. Um erro em uma verificação “trivial” pode ser tão prejudicial quanto em uma função complexa.