2. Eratóstenes viveu no século II a.C. Dentre os vários trabalhos que fez, destacam-se: medição da circunferência da Terra (com um erro de aproximadamente 0,2% apenas), e foi bibliotecário de Alexandria. O crivo de Eratóstenes é uma maneira prática de encontrar números primos, até um certo valor. De maneira muito simples, determina-se o número máximo até o qual deve-se verificar quais são os primos (digamos, n ). Em seguida, calculamos qual é o menor número inteiro menor ou igual a , digamos, m .
3. É definido assim: Escreva uma lista dos números entre 2 e o maior número que você quer testar a primalidade. Vamos chamá-la de lista1; Escreva o número 2, o primeiro número primo, em outra lista que conterá os números primos encontrados. Vamos chamá-la de lista2; Remova o 2 e todos os múltiplos dele da lista1; O primeiro número que sobrar da lista1 é primo. Escreva ele na lista2; Remova essa número e todos os seus múltiplos da lista1. A remoção pode começar da raiz quadrada do número, já que múltiplos menores foram removidos em passos anteriores; Repita os passos de 4 a 6 até não restarem mais números na lista1; A classe a seguir, escrita em Python, retorna uma lista com todos os números primos entre 2 e um número especificado ( max_n ).
4. PYTHON: max_n = 50 class CrivoDeEratostenes: def __init__(self, max_n): self.lista = range(2, max_n + 1) self.primo_lista = [2] self.crivo() def crivo(self): primo_n = self.lista[0] max_n = self.lista[-1] + 1 self.lista.remove(primo_n) for n in self.lista: if n % primo_n == 0: self.lista.remove(n) if len(self.lista)> 0: self.primo_lista.append(self.lista[0]) return self.crivo() else : return self.primo_lista print CrivoDeEratostenes(max_n).primo_lista # [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]