Raku kurss / Pielikums 🆕 / Darbs ar datiem / Skaitļi un matemātika / Exercises / Pilnīgie skaitļi

Risinājums: Pilnīgie skaitļi

Šeit ir iespējams risinājums uzdevumam.

Kods

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

say @perfect;

🦋 Atrodiet programmu failā perfect-numbers.raku.

Izvade

[6 28]

Komentāri

  1. (1..^$n).grep($n %% *) patur skaitļus zem $n, kas to dala bez atlikuma, — tā īstos dalītājus. %% * ir Whatever funkcija, kas pārbauda dalāmību.

  2. [+] šos dalītājus saskaita, un ārējais grep patur tikai tos skaitļus, kas ir vienādi ar šo summu.

Kursa navigācija

Pilnīgie skaitļi   |   Sadalīšana pirmreizinātājos