Курс по Raku / Приложение 🆕 / Работа с данни / Числа и математика / Exercises / Разлагане на прости множители

Решение: Разлагане на прости множители

Ето едно възможно решение на задачата.

Код

my $n = 360;
my @factors;

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

say @factors;

🦋 Намерете програмата във файла prime-factors.raku.

Изход

[2 2 2 3 3 5]

Коментари

  1. За всеки кандидат-делител $d вътрешният while го изважда от $n толкова пъти, колкото се побира, като всеки път добавя $d. Понеже по-малките множители се махат първи, всяко $d, което още дели $n, гарантирано е просто.

  2. $n div= $d е целочислено деление обратно в $n; то смалява числото, докато не остане само 1.

Навигация в курса

Разлагане на прости множители   |   Най-голям общ делител и най-малко общо кратно