[PYTHON] Projekt Euler 23

Problem

Eine perfekte Zahl ist eine Zahl, deren wahre Bruchsumme dieser Zahl mit sich selbst übereinstimmt. Beispielsweise ist die wahre Bruchsumme von 28 1 + 2 + 4 + 7 + 14 = 28. Da es gibt, ist 28 eine perfekte Zahl.

Wenn die Summe der wahren Brüche kleiner als diese Zahl ist, wird sie als Mangelzahl bezeichnet, und wenn die Summe der wahren Brüche größer als diese Zahl ist, wird sie als Überzahl bezeichnet.

Da 12 1 + 2 + 3 + 4 + 6 = 16 ist, ist dies die minimale Überzahl. Daher ist die minimale Zahl, die durch die Summe der beiden Überschusszahlen geschrieben werden kann, 24. Von 28123 durch mathematische Analyse. Es ist bekannt, dass jede große Ganzzahl als Summe zweier überschüssiger Zahlen geschrieben werden kann. Wir wissen, dass die maximale Zahl, die nicht durch die Summe zweier überschüssiger Zahlen dargestellt werden kann, kleiner als diese Obergrenze ist, aber diese Obergrenze reduzieren. Ich habe es nicht geschafft.

Suchen Sie die Summe positiver Ganzzahlen, die nicht als Summe zweier überschüssiger Zahlen geschrieben werden können. http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2023

Antworten

Praxis der Wörterbucheinschlussnotation.

Die Validierung von Elementen mithilfe von Mengen und Wörterbüchern (O (1)) ist schneller als die Suche nach Sequenzen (O (n)). Beim Nachschlagen von a in b sollte b Mengen oder Wörterbücher sein, keine Listen oder 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 #+Es ist ein Schmerz, 1 zu berechnen

  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()

Trotzdem ist es zu spät. Ich habe jedoch nicht die Absicht, es zu verbessern.

Recommended Posts

Projekt Euler 37
Projekt Euler 47
Projekt Euler 31
Projekt Euler 4
Projekt Euler 38
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 25
[Project Euler] Problem1
Projekt Euler15 "Gitterpfad"
Projekt Euler 2 Beschleunigung 2.21 Mikrosekunden speichern.
Projekt Euler Ursprüngliche Methodengruppe 1
Was ist Project Euler 3-Beschleunigung?
Funktionsprogrammierung in Python Project Euler 1
Projekt Euler 10 "Summe der Primzahlen"
[Hinweis] Project Euler in Python (Problem 1-22)
Funktionale Programmierung in Python Project Euler 3
Projekt Euler # 5 "Minimum Multiple" in Python
Project Euler 4 Versuch zu beschleunigen
Funktionsprogrammierung in Python Project Euler 2
Projekt Euler 11 "Maximales Produkt im Raster"
Projekt Euler # 15 "Gitterpfad" in Python
Projekt Euler # 4 "Maximale Kalligraphie" in Python
Projekt Euler 9 Aufbewahrung der Berechnungsergebnisse
Projekt Euler # 3 "Maximale Primfaktoren" in Python
Projekt Euler # 11 "Maximales Produkt im Raster" in Python
Projekt Euler # 7 "1000 1. Primzahl" in Python
Projekt Euler # 16 "Summe der Kräfte" in Python
Projekt Euler # 9 "Spezielle Pitagolas-Nummer" in Python
Projekt Euler # 14 "Längste Spalte mit Kollatennummern" in Python
Ich habe Project Euler 1 in einem Liner geschrieben.
Projekt Euler # 2 "Gerade Fibonacci-Zahl" in Python
Projekt Euler # 17 "Anzahl der Zeichen" in Python