RosettaCodeData/Task/Arithmetic-Rational/Elisa/arithmetic-rational-2.elisa
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

14 lines
413 B
Text

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)?