[PYTHON] Projet Euler 23

problème

Un nombre parfait est un nombre dont la vraie fraction fractionnaire de ce nombre correspond à elle-même. Par exemple, la vraie somme fractionnaire de 28 est 1 + 2 + 4 + 7 + 14 = 28. Puisqu'il y en a, 28 est un nombre parfait.

Si la somme des vraies fractions est inférieure à ce nombre, on l'appelle un nombre de pénurie, et si la somme des vraies fractions est supérieure à ce nombre, on l'appelle un nombre en excès.

Puisque 12 est 1 + 2 + 3 + 4 + 6 = 16, c'est le nombre minimum en excès, donc le nombre minimum qui peut être écrit par la somme des deux nombres en excès est 24. À partir de 28123 par analyse mathématique. On sait que tout grand entier peut être écrit comme la somme de deux nombres en excès Nous savons que le nombre maximum qui ne peut être représenté par la somme de deux nombres en excès est inférieur à cette limite supérieure, mais réduisons cette limite. Je n'ai pas pu.

Trouvez la somme des entiers positifs qui ne peuvent pas être écrits comme la somme de deux nombres en excès. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2023

Répondre

Pratique de la notation d'inclusion de dictionnaire.

La validation des éléments à l'aide d'ensembles et de dictionnaires (O (1)) est plus rapide que la recherche de séquences (O (n)). Lorsque vous recherchez a dans b, b doit être des ensembles ou des dictionnaires, et non des listes ou des taples.

# -*- coding: utf_8 -*-
def factor_sum_seq(max):
  dl = [0] + [1]*(max)
  seq = range(max+1) 
  for i in seq[2:]:
    for j in seq[i*2::i]:
      dl[j] += i
  return dl

def cof():
  MAX = 28123+1 #+C'est pénible de calculer 1

  seq = range(MAX)
  dl = factor_sum_seq(MAX)
  abu = [i for i in seq if dl[i] > i and dl[i]<MAX]
  abu2 = {i+j:True for i in abu for j in abu}
  ans = 0
  for i in seq:
    if not (i in abu2):
      ans += i
  print ans

cof()

Même ainsi, il est trop tard. Cependant, je n'ai pas l'intention de l'améliorer.

Recommended Posts

Projet Euler 37
Projet Euler 47
Projet Euler 31
Projet Euler 4
Projet Euler 38
Projet Euler 26
Projet Euler 8
Projet Euler 23
Projet Euler 22
Projet Euler 19
Projet Euler 50
Projet Euler 42
Projet Euler 33
Projet Euler 32
Projet Euler 43
Projet Euler 35
Projet Euler 36
Projet Euler 24
Projet Euler 46
Projet Euler 48
Projet Euler 45
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
Projet Euler 30
Projet Euler 16
Projet Euler 14
Projet Euler 34
Projet Euler 25
[Projet Euler] problème1
Projet Euler15 "Chemin du treillis"
Project Euler 2 Acceleration 2.21 Économisez des microsecondes.
Projet Euler Original Method Group 1
Qu'est-ce que Project Euler 3 Acceleration?
Programmation fonctionnelle dans Python Project Euler 1
Projet Euler 10 "Somme des nombres premiers"
[Note] Projet Euler en Python (problème 1-22)
Programmation fonctionnelle dans Python Project Euler 3
Projet Euler # 5 "Minimum Multiple" en Python
Projet Euler 4 Tentative d'accélération
Programmation fonctionnelle dans Python Project Euler 2
Projet Euler 11 "Produit maximum dans la grille"
Projet Euler # 15 "Lattice Path" en Python
Projet Euler # 4 "Calligraphie maximum" en Python
Projet Euler 9 Conservation des résultats des calculs
Projet Euler # 3 "Maximum Prime Factors" en Python
Projet Euler # 11 "Produit maximum dans la grille" en Python
Projet Euler # 7 "1000 1er nombre premier" en Python
Projet Euler # 16 "Somme des pouvoirs" en Python
Projet Euler # 9 "Numéro spécial Pitagolas" en Python
Projet Euler # 14 "Colonne de nombre de collats la plus longue" en Python
J'ai écrit Project Euler 1 en une seule ligne.
Projet Euler # 2 "Even Fibonacci Number" en Python
Projet Euler # 17 "Nombre de caractères" en Python