Größter Primfaktor von 600851475143
Verfasst: Sonntag 24. August 2014, 18:30
Es geht um Aufgabe 3 von projekteuler.net
Also ich hab mir folgendes Ausgedacht:
Es sollen praktisch alle Zahlen vor "zahl" durchgegangen werden, geprüft werden ob sie Primzahlen sind und ob sie ein Teiler von "zahl" sind.
Das Zeigen der Primzahlen, die nicht in Frage kommen, soll nur veranschaulichen, dass das Programm arbeitet.
Jetzt zu meiner Frage:
Das ganze dauert nun ziemlich. Habt Ihr vielleicht eine Idee wie man das ganze schneller und eleganter lösen kann?
Die Arbeitsweise ist mir Nacht um 3 eingefallen. Also vielleicht deswegen und wegen mangelnder Erfahrung nicht ganz ausgereift
Freue mich auf eure Antworten!
Lg Max
Also ich hab mir folgendes Ausgedacht:
Code: Alles auswählen
zahl = 600851475143
var = 600851475142
def uII():
if var%2 == 0:
return False
else:
return True
def uIII_IX():
quer = sum([int(i) for i in str(var)])
if (quer%3 == 0) and (quer%9 == 0):
return False
else:
return True
def uV():
if var%5 == 0:
return False
else:
return True
def uVII():
if var%7 == 0:
return False
else:
return True
def teiler():
if zahl%var == 0:
return True
else:
return False
while True:
if (uII() == True) and(uIII_IX() == True) and (uV() == True)\
and (uVII() == True):
print var
if teiler() == True:
print "Lösung: " + var
break
if uII() == False :
var = var - 1
else:
var = var - 2
Das Zeigen der Primzahlen, die nicht in Frage kommen, soll nur veranschaulichen, dass das Programm arbeitet.
Jetzt zu meiner Frage:
Das ganze dauert nun ziemlich. Habt Ihr vielleicht eine Idee wie man das ganze schneller und eleganter lösen kann?
Die Arbeitsweise ist mir Nacht um 3 eingefallen. Also vielleicht deswegen und wegen mangelnder Erfahrung nicht ganz ausgereift

Freue mich auf eure Antworten!
Lg Max