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. (1..^$n).grep($n %% *) konservas la nombrojn sub $n, kiuj dividas ĝin senreste — ĝiajn proprajn divizorojn. La %% * estas Whatever-funkcio, kiu testas divideblecon.

  2. [+] sumigas tiujn divizorojn, kaj la ekstera grep konservas nur la nombrojn, kiuj egalas tiun sumon.

Kursa navigado

Perfektaj nombroj   |   Malkomponado en primfaktorojn