Raku kurss / Pielikums 🆕 / Darbs ar datiem / Skaitļi un matemātika / Exercises / Sadalīšana pirmreizinātājos

Risinājums: Sadalīšana pirmreizinātājos

Šeit ir iespējams risinājums uzdevumam.

Kods

my $n = 360;
my @factors;

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

say @factors;

🦋 Atrodiet programmu failā prime-factors.raku.

Izvade

[2 2 2 3 3 5]

Komentāri

  1. Katram kandidātam $d iekšējais while to izdala no $n tik reižu, cik tas ietilpst, katrreiz ieliekot $d masīvā. Tā kā mazākie reizinātāji tiek noņemti pirmie, katrs $d, kas vēl dala $n, noteikti ir pirmskaitlis.

  2. $n div= $d ir veselo skaitļu dalīšana atpakaļ $n; tā skaitli sarauj, līdz paliek vairs tikai 1.

Kursa navigācija

Sadalīšana pirmreizinātājos   |   Lielākais kopīgais dalītājs un mazākais kopīgais dalāmais