fork download
  1. import timeit
  2.  
  3. def sieve_of_eratosthene(N):
  4.  
  5. # Cria-se uma lista referente a todos os inteiros entre 0 e N:
  6. A = [True] * (N+1)
  7.  
  8. # Define os números 0 e 1 como não primos:
  9. A[0] = A[1] = False
  10.  
  11. # Percorra a lista até encontrar o primeiro número primo:
  12. for value, prime in enumerate(A):
  13.  
  14. # O número é primo?
  15. if prime:
  16.  
  17. # Retorna o número primo:
  18. yield value
  19.  
  20. # Remova da lista todos os múltiplos do número enontrado:
  21. for i in range(value**2, N+1, value):
  22. A[i] = False
  23.  
  24. def main():
  25. primes = list(sieve_of_eratosthene(2750159))
  26. print("Saida:", [primes[i] for i in [7, 1, 199999, 4]])
  27.  
  28. print("Tempo: {}s".format(timeit.timeit(main, number=1)))
  29.  
Success #stdin #stdout 0.55s 64432KB
stdin
Standard input is empty
stdout
('Saida:', [19, 3, 2750159, 11])
Tempo: 0.548010110855s