[PYTHON] Projekt Euler 9 Aufbewahrung der Berechnungsergebnisse

Eine Pitagolas-Zahl (eine natürliche Zahl, die den Satz von Pitagolas erfüllt) ist eine Menge von Zahlen, die die folgende Gleichung mit a <b <c erfüllen.

a2 + b2 = c2 Zum Beispiel 32 + 42 = 9 + 16 = 25 = 52.

Es gibt nur ein Pitagoras-Triplett mit a + b + c = 1000. Berechnen Sie das Produkt abc von diesen. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%209

Zuerst habe ich es gehorsam geschrieben.

def cof1():
  target=1000
  (a,b,c) = (1, 1, target - 2)
  ans = 0
  while a < c:
    while b < c:
      if a**2 + b**2 == c**2:
        ans = a*b*c
        break
      (b,c) = (b + 1, c - 1)
    if ans:
      break
    else:
      (a,b,c) = (a + 1, a + 1, target - a*2 -2)
  #print ans

Ich hatte das Gefühl, dass es ineffizient wäre, jedes Mal die Quadrate von a, b und c zu überprüfen und zu berechnen. pe9.png

Also habe ich im Voraus eine Liste von Quadraten von 1 bis 999 erstellt und versucht, darauf zu verweisen.

def cof2():
  target=1000
  sq = [x**2 for x in range(0,target)] #create 
  (a,b,c) = (1, 1, target - 2)
  ans = 0
  while a < c:
    while b < c:
      if sq[a] + sq[b] == sq[c]:
        ans = a*b*c
        break
      (b,c) = (b + 1, c - 1)
    if ans:
      break
    else:
      (a,b,c) = (a + 1, a + 1, target - a*2 -2)
  #print ans

Infolgedessen konnten wir 3,9 Millisekunden reduzieren (100-mal ausgeführt).

pe9_2.png

Recommended Posts

Projekt Euler 9 Aufbewahrung der Berechnungsergebnisse
Projekt Euler 37
Projekt Euler 7
Projekt Euler 47
Projekt Euler 10 "Summe der Primzahlen"
Projekt Euler 31
Projekt Euler 4
Projekt Euler 38
Projekt Euler 17
Projekt Euler 26
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 36
Projekt Euler 24
Projekt Euler 46
Projekt Euler 48
Projekt Euler 45
Projekt Euler 6
Projekt Euler 39
Projekt Euler 49
Projekt Euler 29
Projekt Euler 27
Projekt Euler 41
Projekt Euler 30
Projekt Euler 16
Projekt Euler 14
Projekt Euler 34
Projekt Euler 25
Projekt Euler # 16 "Summe der Kräfte" 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 # 10 "Summe der Primzahlen" in Python
Projekt Euler # 13 "Summe großer Zahlen" in Python
Projekt Euler # 6 "Differenz in der Summe der Quadrate" in Python
Projekt Euler15 "Gitterpfad"
Projekt Euler 2 Beschleunigung 2.21 Mikrosekunden speichern.
Projekt Euler Ursprüngliche Methodengruppe 1
Verwenden Sie die Clustering-Ergebnisse erneut
Berechnung der Ähnlichkeit durch MinHash
Über die Kostenberechnung von MeCab
Was ist Project Euler 3-Beschleunigung?