Como encontrar os 10 primeiros números primos na prática
A maior parte das pessoas aprende números primos na escola e esquece depois. Quando você precisa deles de novo, seja para um script simples ou para testar algo em criptografia, acaba perdendo tempo buscando a lista toda. Vou mostrar como chegar neles sem depender de consulta externa. O teste de primalidade mais direto que funciona para números pequenos é a divisão por tentativas. Você pega um número, tenta dividir por todos os inteiros de 2 até a raiz quadrada dele. Se alguma divisão der resto zero, não é primo. Se nenhuma der, é primo. É eficiente até uns mil, ponto em que você troca de estratégia.
Aplicando isso do zero:
- 2 — primo, o único par
- 3 — primo
- 4 — divisível por 2, não é
- 5 — primo
- 6 — divisível por 2 e 3, não é
- 7 — primo
- 8, 9, 10 — descartados
- 11 — primo
Se você continuar anotando, chega nos 10 primeiros números primos sem dificuldade. A sequência completa é 2, 3, 5, 7, 11, 13, 17, 19, 23 e 29. Não tem segredo, mas tem uma pegadinha que todo mundo erra na primeira vez.
👉 Clique no botão abaixo para saber mais sobre o assunto!
10 primeiros números primos
A pegadinha é o número 1. As pessoas inserem 1 na lista porque memória Escolar ensina que 1 é "especial" e esquecem a definição formal. 1 tem exatamente um divisor. Primos precisam ter exatamente dois divisores distintos. Então 1 cai fora. Já vi gente colocá-lo em scripts de geração de chaves RSA e levar erro na validação. Eu perdi duas horas debugando isso num projeto pessoal anos atrás, achando que o bug estava na fatoração, quando na verdade meu gerador tinha includo o 1 na conta. O outro erro comum é confundir números ímpares com primos. 9, 15, 21, 25 — todos ímpares, nenhum primo. A crivo de Eratóstenes evita esse erro porque você marca múltiplos sistematicamente, em vez de confiar na paridade. Para os primeiros 10 primos, dá trabalho fazer um crivo inteiro, mas o princípio vale quando o problema cresce.
Se você quer implementar isso em Python, aqui vai um exemplo funcional que eu uso:
def primos(n):
primos = []
candidato = 2
while len(primos) n:
if all(candidato % d != 0 for d in range(2, int(candidato0.5) + 1)):
primos.append(candidato)
candidato += 1
return primos
print(primos(10))
A função roda em menos de 1 milissegundo para 10 primos. Para 1000 primos, leva cerca de 3 milissegundos no meu equipamento. O gargalo aparece depois de 10 mil primos, quando o laço interno começa a pesar. Aí você migra para um crivo real. Uma vantagem que poucos mencionam: saber os 10 primeiros primos de cabeça ajuda em testes rápidos de integridade. Se seu algoritmo de fatoração devolve 1 na lista, algo está errado. Se devolve 4 ou 9, o teste de divisibilidade não está funcionando. É um termômetro barato para verificar se sua implementação básica está no caminho certo.
O limite dessa abordagem é claro. Para primos acima de 10 mil, a divisibilidade por tentativas fica lenta. Sieves segmentados ou testes probabilísticos como Miller-Rabin são o próximo passo. Mas para a lista curta, essa solução é suficiente e leve. Se precisar da lista pronta para copiar, ela é: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29. Sem 1. Sem exceções.