Die Summe der Primzahlen kleiner oder gleich 10 ist 2 + 3 + 5 + 7 = 17.
Finden Sie die Summe aller Primzahlen unter 2 Millionen. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2010
Ich habe es schnell mit mymath geschrieben, das ich früher gemacht habe. (296 ms) http://qiita.com/cof/items/45d3823c3d71e7e22920
Der Algorithmus zum Finden von Primzahlen ist in mymath geschrieben, aber er ist wie folgt
Summieren Sie dann die erstellte Liste der Primzahlen (pri ['Liste'] unten) mit sum ().
import mymath
import mytime
import math
def cof():
target = 2 * (10**6)
pri = mymath.get_primes(target)
print sum(pri['list'])
Ich fragte mich, ob der folgende Algorithmus schneller war, aber langsamer. (420 ms) Es scheint, dass die Verarbeitungsgeschwindigkeit unterschiedlich ist, je nachdem, ob die Liste bourianisch oder nummeriert ist.
def cof2():
target = 2 * (10**6)
L = [0,0]+range(2,target+1)
L[4::2] = [0] * (len(L[4::2]))
p=3
p_max = int(math.sqrt(target))
while p<=p_max:
if L[p]:
L[p*2::p] = [0] * (len(L[p*2::p]))
p+=2
L.remove(0)
print sum(L)
Als ich mir ansah, was andere Leute an die richtige Antwort-Pinnwand geschrieben hatten, war Lucy_Hedgehogs Code, der am 3. Mai 2013 um 19:14 Uhr veröffentlicht wurde, erstaunlich. Als ich es zu Hause laufen ließ, dauerte es 15 ms. Ich konnte seine Erklärung und seinen Code nicht gut verstehen, aber er schien einen anderen Algorithmus (ähnlich dem Algorithmus zum Zählen von Primzahlen) als Eratostenes zu verwenden.
Recommended Posts