Курс Raku / Додаток 🆕 / Робота з даними / Числа та математика / Вправи / Досконалі числа
Розв’язання: Досконалі числа
Ось одне з можливих розв’язань задачі.
Код
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залишає лише ті числа, що дорівнюють цій сумі.