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