vielleicht kennen einige von euch die Seite projecteuler.net. Dort werden Matheprobleme aufgelistet, die man durch ein selbst geschriebenes Programm lösen soll.
Ich hänge im Moment am fünften Problem, welches wie folgt lautet:
Dazu habe ich diesen Code geschrieben, der jedoch keine Zahl findet, auf die alle Kriterien passen. Da muss irgendwo ein Logikfehler sein, aber ich sehe ihn einfach nicht! Hat da wer einen Tipp?2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.
What is the smallest number that is evenly divisible by all of the numbers from 1 to 20?
Code: Alles auswählen
#!/usr/bin/env python
number = range(20,9000000)
divisor = range(1,21)
successful = 0
for i in number:
successful = 0
for x in divisor:
if i % x == 0:
successful += 1
elif i % x != 0:
break
if successful == 20:
print i
quit()
number ist eine Liste, die alle potentiell gesuchten Zahlenn durchgeht. divisor enthält die Zahlen, durch die number geteilt werden soll.
In einer doppelten for-Schleife gehe ich beide Listen durch und prüfe, ob die Zahl number durch divisor ohne Rest teilbar ist. Wenn ja, zähle ich die Variable successful einen Wert nach oben. Erreicht dieser Wert 20, ist number durch alle 20 Divisoren teilbar und somit die gesuchte Zahl.
Bei jedem neuen Wert für number wird successful wieder zurück auf null gesetzt.
Aber wie gesagt, es tut sich nichts. Wenn ich die Bandbreite von number höher schraube, rechnet mein PC nicht mehr sondern hängt sich auf. Ich glaube aber auch nicht, dass die Zahl so groß ist.
Hat jemand eine Idee?