Problème 10 "somme des nombres premiers"
La somme des nombres premiers inférieurs ou égaux à 10 est 2 + 3 + 5 + 7 = 17. Trouvez la somme de tous les nombres premiers inférieurs à 2 millions.
Python
n = 2000000
def generate_primes(n):
primes = [2]
for i in range(3, n+1, 2):
for p in primes:
if i % p == 0:
break
else:
primes += [i]
if i % (n // 100) == 1:
print "%d / %d" % (i, n)
return primes
primes = generate_primes(n)
result = sum(primes)
print result
print result == 142913828922
print primes[-5:]
résultat
142913828922
True
[1999891, 1999957, 1999969, 1999979, 1999993]
Cela prend trop de temps, alors je veux le rendre plus rapide.
Recommended Posts