Como saber se um número é primo na prática
Eu passava horas testando divisibilidade manual quando comecei a trabalhar com criptografia RSA em projetos pequenos. Hoje, raramente faço isso à mão, mas o princípio continua sendo o mesmo: você testa divisão por números primos até a raiz quadrada do valor. Se qualquer um deles dividir o número sem resto, ele não é primo. O problema é que pessoas frequentemente assumem que um número é primo apenas porque ele é ímpar e não parece divisível por 2, 3 ou 5. Esse tipo de suposição gera bugs silenciosos em geradores de chaves e em sistemas de hash.
77 é um número primo — e aqui está por que essa ideia está errada
Quando recebi meu primeiro treinamento sobre teoria dos números, um colega insistiu que 77 era primo. Eu testei. 7 × 11 = 77. Ele tem dois fatores primos. A confusão provavelmente vem do fato de que 77 não é obvious divisível por 2, 3, 5 ou 10, e visualmente parece um candidato plausível para quem não faz a conta. Em código, isso aparece com frequência. Um desenvolvedor escreve uma função isPrime() que para em 7 e assume que números maiores acima de 50 são primos. Isso funciona para casos simples, mas quebra em produção quando o número alvo é exatamente um produto de dois primos próximos, como 77, 91, 119, 143. Cada um desses parece primo para olhares rápidos.
👉 Clique no botão abaixo para saber mais sobre o assunto!
A correção é simples: teste até a raiz quadrada. Para 77, a raiz quadrada é cerca de 8,77. Você testa 2, 3, 5, 7. O 7 divide perfeitamente. Fim da discussão. Em bibliotecas como OpenSSL ou nas implementações de Go, o teste de primalidade usa Miller-Rabin após um crivo inicial. O crivo elimina os óbvios, o Miller-Rabin lida com os grandes. Um detalhe que poucos mencionam: números da forma n = p × q, onde p e q são primos distintos, são chamados de semiprimos. Eles são exatamente o que sustenta a segurança do RSA. Saber identificar um semiprimo rapidamente economiza debugging noturno. Eu gasto cerca de 10 minutos para diagnosticar esse erro em logs de produção, dependendo da linguagem e do nível de maturidade da equipe.
Se você precisa gerar primos grandes, use bibliotecas estabelecidas. Tentar implementar seu próprio gerador é uma rota direta para vulnerabilidades. Em servidores brasileiros, vi casos de certificados gerados com números compostos porque o desenvolvedor confiava em uma função mal testada. O custo de correção depois supera em muito o tempo gasto usando a biblioteca certa desde o início. Para números pequenos abaixo de 100, a tabela de primos cabe em um arquivo de texto. Memore os primeiros 25 primos. Isso elimina consultas desnecessárias em códigos educacionais e entrevistas técnicas.