Projet Euler n ° 12 "Triangles hautement ajustés" en Python

Problème 12 "Numéro de triangle hautement ajusté"

La séquence des triangles est représentée par la somme des nombres naturels, le septième triangle est 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. Les 10 premiers termes du triangle sont:

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

Devient. Pour les 7 premiers trimestres, les réductions sont listées ci-dessous.

 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

À partir de là, nous pouvons voir que le 7ème triangle numéro 28 est le premier numéro de triangle avec plus de 5 réductions. Ensuite, certains des premiers triangles ont plus de 500 réductions.

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]

résultat


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

Recommended Posts

Projet Euler n ° 12 "Triangles hautement ajustés" en Python
Projet Euler # 7 "1000 1er nombre premier" en Python
Projet Euler # 17 "Nombre de caractères" en Python
Projet Euler # 8 "Produit maximum en chaîne numérique" en Python
[Note] Projet Euler en Python (problème 1-22)
Programmation fonctionnelle dans Python Project Euler 3
Projet Euler # 5 "Minimum Multiple" en Python
Programmation fonctionnelle dans Python Project Euler 2
Projet Euler # 15 "Lattice Path" en Python
Projet Euler # 4 "Calligraphie maximum" en Python
Projet Euler # 3 "Maximum Prime Factors" en Python
Projet Euler # 11 "Produit maximum dans la grille" en Python
Projet Euler # 16 "Somme des pouvoirs" en Python
Projet Euler # 14 "Colonne de nombre de collats la plus longue" en Python
Projet Euler # 2 "Even Fibonacci Number" en Python
Projet Euler # 1 "Multiple de 3 et 5" en Python
Projet Euler # 10 "somme des nombres premiers" en Python
Projet Euler # 13 "Somme des grands nombres" en Python
Projet Euler # 6 "Différence de somme des carrés" en Python
Premier nombre 2 en Python
Reconnaissance des nombres dans les images avec Python
Générateur principal infini en Python3
Etude, jeu de numérotation avec Python
Projet Euler 11 "Produit maximum dans la grille"
Projet Euler 7
Projet Euler 47
Projet Euler 31
Projet Euler 38
Projet Euler 17
Projet Euler 8
Projet Euler 23
Projet Euler 22
Projet Euler 19
Projet Euler 50
Projet Euler 42
Projet Euler 32
Projet Euler 35
Projet Euler 36
Projet Euler 46
Projet Euler 48
Projet Euler 6
Projet Euler 44
Projet Euler 39
Projet Euler 40
Projet Euler 49
Projet Euler 29
Projet Euler 27
Projet Euler 41
Projet Euler 18
Projet Euler 13
J'ai écrit Project Euler 1 en une seule ligne.
Projet Euler 30
Projet Euler 16
Projet Euler 14
Projet Euler 34
Projet Euler 25
Sortie du nombre de cœurs de processeur en Python
Énumération des nombres premiers et jugement des nombres premiers en Python
Quadtree en Python --2
Python en optimisation
CURL en Python