use RationalNumbers; PerfectNumbers( Limit = integer) -> multi(integer); PerfectNumbers( Limit) = [ Candidate = 2 .. Limit; Sum:= Rational(1,Candidate); [ Divisor = 2 .. integer(sqrt(real(Candidate))); if mod(Candidate, Divisor) == 0 then Sum := Sum + Rational(1, Divisor) + Rational(Divisor, Candidate); ]; if Sum == Rational(1,1) then Candidate ]; PerfectNumbers(10000)?