Hallo zusammen
Seit gestern versuche ich (als neuling in py =) die aufgaben auf projecteueler.net zu lösen.
bei dieser aufgabe http://projecteuler.net/index.php?section=problems&id=5
weiss ich echt nicht warum dieser code nicht geht.
code:
http://pastebin.ch/2245
kann mir jemand dies erklären?
Gruss
suizo
ps. sry wegen den links js geht bei mir atm nicht d.h. kann ichs nicht besser posten =)
Projecteuler problem 5
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Was heißt denn "funktioniert nicht"? Hab das Zeug jetzt nicht ausgeführt, darum sag doch mal, was tut denn nicht? ;-)
Übrigens könntest du den Modulo-Rest verwenden:
Grüße
Übrigens könntest du den Modulo-Rest verwenden:
Code: Alles auswählen
In [1]: 10 %2
Out[1]: 0
In [2]: 10 % 3
Out[2]: 1
In [3]: 20 % 3
Out[3]: 2
Und ich verstehe nicht, was du dir dabei gedacht hast!suizo hat geschrieben:Hallo zusammen
Seit gestern versuche ich (als neuling in py =) die aufgaben auf projecteueler.net zu lösen.
bei dieser aufgabe http://projecteuler.net/index.php?section=problems&id=5
weiss ich echt nicht warum dieser code nicht geht.
Euler 5 ist eine Aufgabe, die man in 3 min auf dem Papier löst - ein Programm braucht man dafür überhaupt nicht.
Gedankenanstoß dazu: Eine Zahl, die garantiert ohne Rest durch alle Zahlen von 1 bis 20 teilbar ist, ist 20!. Das ist allerdings nicht die kleinste Zahl. Beispielsweise kann man die 10 aus dem Produkt herauslassen, weil das Ergebnis trotzdem noch durch 10 teilbar ist, weil in dem Produkt 2 und 5 ohnehin vorkommen. Wenn du diese Idee zu Ende denkst, dann hast du am Ende ein paar Zahlen, die du mit dem Taschenrechner multiplizierst und fertig.
@Dauerbaustelle
danke für dein input =)
ja es stimmt es macht mehr sinn!
was nicht funktioniert?
es läuft und läuft und läuft und liefert mir kein resultat zurück
@numerix
es geht mir nicht ob es eine "schlaue" lösung ist oder nicht. Ich weiss das man die aufgabe im kopf lösen kann (kgv der zahl suchen und diese dann multiplizieren abr nicht 2 mal) (das in der klammer versteht jetzt sicher niemand aber egal um das geht es ja nicht
mir geht es etwas mit py zu lösen. wie ich evt. zu wenig betont habe lerne ich gerade py (bin in der py doku im modul 9 klasse ..
da mir das lesen zu einseitig wurde begann ich mit denn euler aufgaben.
@all
ich verstehe immer noch nicht warum der code nicht geht!
bei 1-10 findet er die lösung nähmlich 2520
siehe code:
warum gehts nicht wenn ich den range von der for-schleife auf range(11,21) setzte?
Gruss
Suizo
ps. danke schon im voraus für die antwort(en)
danke für dein input =)
ja es stimmt es macht mehr sinn!
was nicht funktioniert?
es läuft und läuft und läuft und liefert mir kein resultat zurück
@numerix
es geht mir nicht ob es eine "schlaue" lösung ist oder nicht. Ich weiss das man die aufgabe im kopf lösen kann (kgv der zahl suchen und diese dann multiplizieren abr nicht 2 mal) (das in der klammer versteht jetzt sicher niemand aber egal um das geht es ja nicht

mir geht es etwas mit py zu lösen. wie ich evt. zu wenig betont habe lerne ich gerade py (bin in der py doku im modul 9 klasse ..

da mir das lesen zu einseitig wurde begann ich mit denn euler aufgaben.
@all
ich verstehe immer noch nicht warum der code nicht geht!
bei 1-10 findet er die lösung nähmlich 2520
siehe code:
Code: Alles auswählen
for x in range(2000, 90000000000):
q = True
for y in range(1,11):
if float(x) / float(y) != x / y:
q=False
break
if q:
print x
break
Gruss
Suizo
ps. danke schon im voraus für die antwort(en)

@suizo: Vielleicht bist Du auch einfach nur zu ungeduldig. Die Zahl ist nämlich um einiges grösser als die läppischen 2520.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Jo, mein C-Programm was ich vorher dafür geschrieben hatte (was um einiges schneller ist!) ist auch gelaufen und gelaufen, bis ich keine Lust mehr hatte zur warten (waren bestimmt 10 Min oder oder so)
Na, dann hast du's ja geschafft, denn eine "unschlaue" Lösung hast du ja entwickelt. "Programmieren" ist doch nicht das Gegenteil von "schlauer Lösung"! Um die Probleme von Euler & Co. zu lösen, brauchst du zunächst einmal eine schlaue Lösungsidee bzw. einen Algorithmus. Den musst du dann implementieren. Dir fehlt der erste Teil, darum wird aus dem zweiten auch nichts.suizo hat geschrieben:@numerix
es geht mir nicht ob es eine "schlaue" lösung ist oder nicht.
Überleg doch mal, wie viele Schleifendurchläufe du da produzierst. Das kann doch nicht funktionieren. Wenn du es partout nicht mit Stift und Papier lösen willst, dann entwickle doch einen Algorithmus, der dir das kgV(1,...,20) berechnet. Der braucht max. ein paar Millisekunden ...
Mit den passenden Modulen ist das auch ein ganz kleiner Einzeiler:
Code: Alles auswählen
In [6]: reduce(gmpy.lcm, xrange(1, 11))
Out[6]: mpz(2520)