Курс языка программирования 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.

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

Разложение на простые множители   |   Наибольший общий делитель и наименьшее общее кратное