Kurso de Raku / Aldono 🆕 / Labori kun datumoj / Nombroj kaj matematiko / Exercises / Perfektaj nombroj
Solvo: Perfektaj nombroj
Jen ebla solvo de la tasko.
Kodo
my @perfect = (1..30).grep: -> $n {
$n == [+] (1..^$n).grep($n %% *)
};
say @perfect;🦋 Vi povas trovi la fontkodon en la dosiero perfect-numbers.raku.
Eligo
[6 28]Komentoj
(1..^$n).grep($n %% *)konservas la nombrojn sub$n, kiuj dividas ĝin senreste — ĝiajn proprajn divizorojn. La%% *estas Whatever-funkcio, kiu testas divideblecon.[+]sumigas tiujn divizorojn, kaj la eksteragrepkonservas nur la nombrojn, kiuj egalas tiun sumon.