Os números primos possuem várias aplicações, como criptografia e segurança dos dados (por exemplo: SSL, X509, certificados, chaves privadas, ..), e a obtenção deles de forma eficiente sempre foi alvo de estudo dos matemáticos.
O Crivo de Eratóstenes é um algoritmo muito simples e eficiente para gerar números primos. Esse algoritmo consiste em remover os múltiplos de um determinando conjunto.
Por exemplo, quero achar todos os números primos de 1 a 120. O algoritmo gera um conjunto com todos os números de 2 a 120 (já que 1 não é primo). Utiliza o primeiro número (que no caso é 2), e vai removendo os múltiplos: 4, 6, 8, 10, .... e marca o 2 como primo, procura o próximo não removido que é o 3, marca como primo, e vai removendo os múltiplos se não foram removidos anteriormente: 6, 9, 12, 15... Ele vai fazendo isso até raiz quadrada do número máximo que você quer verificar. Se a raiz não é inteira, truncamos (menor inteiro). No nosso exemplo, raiz quadrado de 120, que fica entre 10 e 11 e portanto só precisamos verificar os múltiplos até 10. Garantindo que buscamos por todos os múltiplos possíveis até 120.
Já fiz esse crivo em C.
É um ótimo exemplo para se praticar programação.
Valeu!
Thiago, saudações ...
Gostei do seu blog e já o favoritei ...
Sobre este ótimo post, tenho algumas dúvidas:
a) existe uma definição recursiva para este crivo dos números primos ??? No sentido matemático - não computacional, através de códigos de programação - e sim, como as fórmulas recursivas dos números de Fibonacci ??
b) o crivo de eratostenes pode ser implementado em toda e qualquer linguagem de programação ????
Adeus e vlw ...
a) Existe sim...
Dá uma olhada no código em Haskell que é mais próxima da definição matemática: http://en.literateprograms.org/Sieve_of_Eratosthenes_%28Haskell%29
b) Se a linguagem for completa, creio que sim... pois ele é computável.
Thiago, mt grato desde já pelo retorno ...
Até a próxima, pois irei voltar aki muitas vezes ...