Raku-Kurs / Anhang 🆕 / Arbeiten mit Daten / Zahlen und Mathematik / Exercises / Primfaktorzerlegung

Lösung: Primfaktorzerlegung

Hier ist eine mögliche Lösung der Aufgabe.

Code

my $n = 360;
my @factors;

for 2..$n -> $d {
    while $n %% $d {
        @factors.push($d);
        $n div= $d;
    }
}

say @factors;

🦋 Du findest den Quellcode in der Datei prime-factors.raku.

Ausgabe

[2 2 2 3 3 5]

Kommentare

  1. Für jeden Teilerkandidaten $d teilt das innere while ihn so oft aus $n heraus, wie er hineinpasst, und pusht dabei jedes Mal $d. Weil die kleineren Faktoren zuerst entfernt werden, ist jedes $d, das $n noch teilt, mit Sicherheit prim.

  2. $n div= $d ist eine Ganzzahldivision zurück in $n; sie schrumpft die Zahl, bis nichts als 1 übrig bleibt.

Kursnavigation

Primfaktorzerlegung   |   Größter gemeinsamer Teiler und kleinstes gemeinsames Vielfaches