$ include "seed7_05.s7i"; const func boolean: isPerfect (in integer: n) is func result var boolean: isPerfect is FALSE; local var integer: i is 0; var integer: sum is 1; var integer: q is 0; begin for i range 2 to sqrt(n) do if n rem i = 0 then sum +:= i; q := n div i; if q > i then sum +:= q; end if; end if; end for; isPerfect := sum = n; end func; const proc: main is func local var integer: n is 0; begin for n range 2 to 33550336 do if isPerfect(n) then writeln(n); end if; end for; end func;