quinta-feira, 13 de março de 2014

O Crivo de Eratóstenes

Sabemos que n é primo se, e somente se, ele tiver dois divisores naturais distintos: 1 e n. Logo, 1 não pode ser primo.

Um método bastante conhecido - e eficaz - de se gerar uma seqüência de números primos é o crivo de Eratóstenes, um dos algorítmos mais antigos conhecidos. Ele consiste em pegar uma tabela com os números de 2 até n, manter 2 e ir marcando (jogando fora) os múltiplos de 2, manter o próximo número (3, no caso) e ir marcando seus múltiplos, e assim repetir o processo até não haver mais número com múltiplo menor ou igual a n sobrando.

Segue minha implementação em R, que será extremamente útil em muitos problemas do PE. Creio que ela possa ser melhorada.

Algo que gosto muito no R é a elegância como posso extrair subconjuntos de um vetor. Por exemplo, na linha
nums <- nums[nums %% j != 0]
eu quero que o vetor nums receba os elementos dele próprio que sejam divisíveis por j. Bem melhor que programar a iteração por seus elementos, não? E o R faz isso de maneira bem eficiente.

ATUALIZAÇÃO: consegui melhorar minha implementação. Só ver aqui. :o)

Nenhum comentário:

Postar um comentário