[PYTHON] Projekt Euler 10 "Summe der Primzahlen"

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

  1. Erstellen Sie mit dem Elastotenness-Sieb eine Liste von Bourianern, deren Primzahl wahr und deren nicht-primäre Zahl falsch ist.
  2. Erstellen Sie aus dieser Liste eine Liste mit Primzahlen in Listeneinschlussnotation.

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.

  1. Erstellen Sie eine Liste mit Zahlen. [0,0,2,3,4,5,6,7,8,9,10, ‥](1 wird im Voraus auf 0 gesetzt.
  2. Schleife für Primzahlen und setze das Vielfache der in der Zahlenfolge enthaltenen Primzahlen auf 0. [0,0,2,3,0,5,0,7,0,0,0, ‥]
  3. Nehmen Sie die Summe () der verbleibenden Liste.
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

Projekt Euler 10 "Summe der Primzahlen"
Projekt Euler # 10 "Summe der Primzahlen" in Python
Projekt Euler # 13 "Summe großer Zahlen" in Python
Projekt Euler # 16 "Summe der Kräfte" in Python
Diskriminierung von Primzahlen
Projekt Euler # 6 "Differenz in der Summe der Quadrate" in Python
Projekt Euler 7
Projekt Euler 47
Projekt Euler 31
Projekt Euler 4
Projekt Euler 38
Projekt Euler 17
Projekt Euler 26
Projekt Euler 8
Projekt Euler 23
Projekt Euler 22
Projekt Euler 19
Projekt Euler 50
Projekt Euler 42
Projekt Euler 33
Projekt Euler 32
Projekt Euler 43
Projekt Euler 35
Projekt Euler 36
Projekt Euler 24
Projekt Euler 46
Projekt Euler 48
Projekt Euler 45
Projekt Euler 6
Projekt Euler 44
Projekt Euler 39
Projekt Euler 40
Projekt Euler 49
Projekt Euler 29
Projekt Euler 27
Projekt Euler 41
Projekt Euler 18
Projekt Euler 13
Projekt Euler 30
Projekt Euler 16
Projekt Euler 14
Projekt Euler 34
Projekt Euler 9 Aufbewahrung der Berechnungsergebnisse
Projekt Euler 25
Projekt Euler # 3 "Maximale Primfaktoren" in Python
Projekt Euler # 7 "1000 1. Primzahl" in Python
Projekt Euler # 2 "Gerade Fibonacci-Zahl" in Python
Projekt Euler # 17 "Anzahl der Zeichen" in Python
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
[Project Euler] Problem1
Projekt Euler 28 Ineffizienter Antwortvorschlag Erstellen Sie "Spiral Lined Numbers"
Lösen mit Ruby und Python AtCoder ABC084 D Kumulative Summe der Primzahlen
Primzahlen und Brüche
Finden Sie Primzahlen rekursiv
Primzahl in Python
Die diesjährige Primzahl
Projekt Euler15 "Gitterpfad"
Was ich durch das Lösen von 30 Fragen von Python Project Euler gelernt habe
Summe mehrerer Numpy-Arrays (Summe)
Projekt Euler 2 Beschleunigung 2.21 Mikrosekunden speichern.
Projekt Euler Ursprüngliche Methodengruppe 1