Курс языка программирования Raku / Приложение 🆕 / Работа с данными / Числа и математика / Exercises / Совершенные числа
Решение: Совершенные числа
Вот один из возможных вариантов решения задачи.
Код
my @perfect = (1..30).grep: -> $n {
$n == [+] (1..^$n).grep($n %% *)
};
say @perfect;🦋 Исходный код можно найти в файле perfect-numbers.raku.
Вывод
[6 28]Комментарии
(1..^$n).grep($n %% *)оставляет те числа меньше$n, на которые оно делится нацело, — его собственные делители.%% *— это функция с Whatever, проверяющая делимость.[+]складывает эти делители, а внешнийgrepоставляет только те числа, которые равны получившейся сумме.