Курс по 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запазва само онези числа, които са равни на тази сума.