Curso de Raku / Apéndice 🆕 / Trabajar con datos / Números y matemáticas / Exercises / Números perfectos
Solución: Números perfectos
Aquí tienes una posible solución para la tarea.
Código
my @perfect = (1..30).grep: -> $n {
$n == [+] (1..^$n).grep($n %% *)
};
say @perfect;🦋 Puedes encontrar el código fuente en el archivo perfect-numbers.raku.
Salida
[6 28]Comentarios
(1..^$n).grep($n %% *)conserva los números menores que$nque lo dividen sin resto: sus divisores propios. El%% *es una función Whatever que comprueba la divisibilidad.[+]suma esos divisores, y elgrepexterior conserva solo los números que son iguales a esa suma.