Projekt Euler # 12 "Hochangepasste Dreiecke" in Python

Problem 12 "Hochangepasste Dreieckszahl"

Die Folge von Dreiecken wird durch die Summe der natürlichen Zahlen dargestellt, das siebte Dreieck ist 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Die ersten 10 Terme des Dreiecks sind:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

Wird. Für die ersten 7 Begriffe sind die Ermäßigungen unten aufgeführt.

 1: 1
 3: 1,3
 6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

Daraus können wir ersehen, dass die 7. Dreieckszahl 28 die erste Dreieckszahl mit mehr als 5 Verkleinerungen ist. Dann haben einige der ersten Dreiecke mehr als 500 Teiler.

Python


import math

# limit = 5
limit = 500

def compute_factors(num):
  factors = [1]
  if(num == 1): return factors
  for i in range(2, int(math.floor(math.sqrt(num))) + 1):
    if(num % i == 0):
      factors.append(i)
  factors_rev = list(factors)
  factors_rev.reverse()
  for i in factors_rev:
    fac = num // i
    if(fac not in factors):
      factors.append(fac)
  return factors

triangular_nums = [1]
factors = []
n = 2
while True:
  triangular_num = triangular_nums[n-1-1] + n
  triangular_nums.append(triangular_num)
  factors = compute_factors(triangular_num)
  if(len(factors) > limit):
    break
  n += 1

result = triangular_nums[-1]

print result
print result == 76576500
print n
print factors[:10]

Ergebnis


76576500
True
12375
[1, 2, 3, 4, 5, 6, 7, 9, 10, 11]

Recommended Posts

Projekt Euler # 12 "Hochangepasste Dreiecke" in Python
Projekt Euler # 7 "1000 1. Primzahl" in Python
Projekt Euler # 17 "Anzahl der Zeichen" in Python
Projekt Euler # 8 "Maximales Produkt in Anzahl Zeichenfolge" in Python
[Hinweis] Project Euler in Python (Problem 1-22)
Funktionale Programmierung in Python Project Euler 3
Projekt Euler # 5 "Minimum Multiple" in Python
Funktionsprogrammierung in Python Project Euler 2
Projekt Euler # 15 "Gitterpfad" in Python
Projekt Euler # 4 "Maximale Kalligraphie" in Python
Projekt Euler # 3 "Maximale Primfaktoren" in Python
Projekt Euler # 11 "Maximales Produkt im Raster" in Python
Projekt Euler # 16 "Summe der Kräfte" in Python
Projekt Euler # 14 "Längste Spalte mit Kollatennummern" in Python
Projekt Euler # 2 "Gerade Fibonacci-Zahl" in Python
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
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
Primzahl 2 in Python
Zahlenerkennung in Bildern mit Python
Unendlicher Primgenerator in Python3
Studiere, nummeriere das Spiel mit Python
Projekt Euler 11 "Maximales Produkt im Raster"
Projekt Euler 7
Projekt Euler 47
Projekt Euler 31
Projekt Euler 38
Projekt Euler 17
Projekt Euler 8
Projekt Euler 23
Projekt Euler 22
Projekt Euler 19
Projekt Euler 50
Projekt Euler 42
Projekt Euler 32
Projekt Euler 35
Projekt Euler 36
Projekt Euler 46
Projekt Euler 48
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
Ich habe Project Euler 1 in einem Liner geschrieben.
Projekt Euler 30
Projekt Euler 16
Projekt Euler 14
Projekt Euler 34
Projekt Euler 25
Geben Sie die Anzahl der CPU-Kerne in Python aus
Primzahlaufzählung und Primzahlbeurteilung in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python