121 É Um Número Primo - Números primos: como saber se um número é primo ou não! - YouTube
Números primos: como saber se um número é primo ou não! - YouTube

Por que a afirmação "121 é um número primo" está errada — e por que isso confunde todo mundo

Eu já vi gente jurando de pés juntos que 121 era primo em várias reuniões de modeling, inclusive num projeto de criptografia onde precisei auditar um script e encontrei exatamente esse erro. O código estava gerando chaves com um gerador que usava uma lista de primos "hardcoded" mal formatada, e o número 121 estava na lista. Perdi cerca de duas horas rastreando bugs de segurança que não eram bugs de segurança, mas sim um problema matemático elementar.

121 é um número primo

A resposta direta é não. 121 não é primo. Ele é divisível por 11, e 11 × 11 = 121. O único divisor próprio de 121, além de 1 e dele mesmo, é 11. Isso significa que 121 é um número composto, mais especificamente o quadrado de um primo. A confusão é compreensível. Quando você aplica a peneira de Eratóstenes tradicional nos primeiros passos, os números que sobrevivem ao crivo do 2, do 3 e do 5 parecem primos. 121 passa pela teste de divisibilidade por 2 (não é par), por 3 (a soma dos dígitos é 4, não divisível por 3) e por 5 (não termina em 0 ou 5). A intuição leva a crer que está diante de um primo. Mas o crivo precisa prosseguir até a raiz quadrada do número, e a raiz quadrada de 121 é exatamente 11. Como 11 é primo e divide 121, o número é composto. Fim da história.

Como testar se um número é primo na prática

O método mais direto para alguém que precisa fazer verificações manuais ou em código simples é o teste de trial division até a raiz quadrada. Para um número n, você testa divisibilidade por todos os primos de 2 até floor(n). Se nenhum dividir n exatamente, então n é primo. Se algum dividir, n é composto. Em Python, uma função mínima leva essa forma:

def is_prime(n):     if n < 2:         return False     for p in range(2, int(n0.5) + 1):         if n % p == 0:             return False     return True Essa função responde False para 121 porque quando p chega a 11, 121 % 11 é zero. O loop para ali e retorna False. Simples.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Para números maiores, trial division fica lento. O teste de Miller-Rabin é o padrão da indústria para verificação probabilística de primalidade. Ele é usado em bibliotecas como OpenSSL e no módulo pow() do Python para geração de chaves RSA. A versão determinística para números abaixo de 3,317,044,064,679,887,385,961,981 usa os witnesses [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37], e 121 seria detectado como composto já no primeiro witness, rapidamente.

O erro comum que quase todo mundo comete

A armadilha clássica é parar o teste de divisibilidade nos primos menores que 5 ou 7. Muitos manuais introdutórios mostram a peneira de Eratóstenes e depois param a explicação nos primeiros passos, o que deixa a impressão errada de que os números que sobrevivem ao crivo inicial são automaticamente primos. 121, 143 (11×13), 169 (13×13) e 221 (13×17) caem nessa pegadinha com frequência. São todos produtos de primos iguais ou maiores que 11, e portanto invisíveis aos crivos mais básicos. Outro erro prático que encontrei no campo: implementar um gerador de primos usando apenas a verificação de paridade mais um teste contra os cinco primeiros primos (2, 3, 5, 7, 11) como "suficiente para a maioria dos casos". Isso funciona até você encontrar um número como 143, que passa em todos esses testes mas não é primo. Em produção, esse tipo de falha gera certificados inválidos e quebras silenciosas de validação que só aparecem semanas depois, quando o sistema tenta usar uma chave que nunca deveria ter sido gerada.

121 e suas propriedades

Além de ser 11², 121 tem outras características relevantes. É um número quadrado perfeito. É também um número autômato (automorphic), pois 11² = 121 termina em 21, mas essa propriedade não se mantém para o próprio 121 elevado ao quadrado de forma trivial. Em termos de representação, 121 em binário é 1111001, e em hexadecimal é 79. Não tem aplicação prática direta fora da teoria dos números, mas serve como exemplo didático excelente para qualquer material que ensine primalidade. Se você precisa de uma referência rápida para validar primos, o site primosearch.org ou o OEIS (A000040) listam a sequência de números primos com validação comunidade. Para uso em código, a biblioteca SymPy do Python implementa isprime() com uma combinação de trial division, Miller-Rabin e teste de Eistein, e ela classifica 121 corretamente como não primo sem qualquer esforço adicional da sua parte.

O que eu recomendo na prática: pare de confiar na intuição de que "não é divisível por 2, 3 ou 5, logo é primo". A verificação precisa chegar até a raiz quadrada. Custo computacional para números dessa magnitude é irrelevante, e o risco de erro custa muito mais caro do que três linhas de código extras.