Corso di Raku / Appendice 🆕 / Lavorare con i dati / Numeri e matematica / Exercises / Numeri perfetti

Soluzione: Numeri perfetti

Ecco una possibile soluzione del compito.

Codice

my @perfect = (1..30).grep: -> $n {
    $n == [+] (1..^$n).grep($n %% *)
};

say @perfect;

🦋 Trova il programma nel file perfect-numbers.raku.

Output

[6 28]

Commenti

  1. (1..^$n).grep($n %% *) conserva i numeri sotto $n che lo dividono esattamente — i suoi divisori propri. Il %% * è una funzione Whatever che verifica la divisibilità.

  2. [+] somma quei divisori, e il grep esterno conserva solo i numeri uguali a quella somma.

Numeri perfetti   |   Fattorizzazione in numeri primi