15 lines
413 B
Plaintext
15 lines
413 B
Plaintext
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)?
|