• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Project Euler - Problem 5

htmltroll

Neues Mitglied
Hallo,
Ich versuche mich gerade an den Problemen von Project Euler. Das 5. Problem lautet:
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 positive number that is evenly divisible by all of the numbers from 1 to 20?
Für die Englischhasser:
2520 ist die kleinste Zahl, die durch alle Zahlen von 1 bis 10 teilbar sind, ohne irgendeinen Rest zu hinterlassen.
Was ist die kleinste positive Nummer, die durch alle Zahlen von 1 bis 20 ohne Rest teilbar ist?
Mein Ansatz dazu ist:
PHP:
<?php
$num = 1;
for($i = 20; $i > 0; $i--) {
      if($num % $i != 0) {
               $num *= $i;
      }
}
echo $num;
?>
Das Ergebnis ist 7821830016000. Das sieht aber um einen falsch aus, und zum anderen IST es auch falsch. Wisst ihr einen besseren Lösungsansatz, bzw. sieht meinen Fehler?
MfG htmltroll
 
Du musst einige Zahlen auslassen, da sie in anderen schon "enthalten" sind.
Wenn eine Zahl restlos durch 20 teilbar ist, so ist sie auch automatisch restlos durch 10 teilbar.
Genauso verhält es sich mit geraden Zahlen und der Zahl 2.
Ich vermute, du musst mit Primfaktorzerlegung arbeiten und daraus die kleinstmögliche Primfaktormenge bilden.
Frag mich aber nicht, wie das gehen soll, vielleicht gibt es ja auch einen besseren Ansatz. ;)
http://www.drbeat.li/php/source_hl.php?src=php/prim.php

Code:
1     1
2     2
3     3
4     2 *  2
5     5    
6     2 *  3
7     7
8     2 *  2 *  2
9     3 *  3
10    2 *  5
11    11
12    2 *  2 *  3
13    13
14    2 *  7
15    3 *  5
16    2 *  2 *  2 *  2
17    17
18    2 *  3 *  3
19    19
20    2 *  2 *  5
Ergibt zusammengefasst folgende gemeinsame Primfaktoren:
2,2,2,2,3,3,5,7,11,13,17,19

Multipliziert:
232 792 560
 
Zuletzt bearbeitet:
Zurück
Oben