procedure main(arglist) limit := \arglist[1] | 100000 write("Perfect numbers from 1 to ",limit,":") every write(isperfect(1 to limit)) write("Done.") end procedure isperfect(n) #: returns n if n is perfect local sum,i every (sum := 0) +:= (n ~= divisors(n)) if sum = n then return n end link factors