47 lines
1,000 B
Text
47 lines
1,000 B
Text
$ include "seed7_05.s7i";
|
|
|
|
const proc: writeProperDivisors (in integer: n) is func
|
|
local
|
|
var integer: i is 0;
|
|
begin
|
|
for i range 1 to n div 2 do
|
|
if n rem i = 0 then
|
|
write(i <& " ");
|
|
end if;
|
|
end for;
|
|
writeln;
|
|
end func;
|
|
|
|
const func integer: countProperDivisors (in integer: n) is func
|
|
result
|
|
var integer: count is 0;
|
|
local
|
|
var integer: i is 0;
|
|
begin
|
|
for i range 1 to n div 2 step succ(n rem 2) do
|
|
if n rem i = 0 then
|
|
incr(count);
|
|
end if;
|
|
end for;
|
|
end func;
|
|
|
|
const proc: main is func
|
|
local
|
|
var integer: i is 0;
|
|
var integer: v is 0;
|
|
var integer: max is 0;
|
|
var integer: max_i is 1;
|
|
begin
|
|
for i range 1 to 10 do
|
|
write(i <& ": ");
|
|
writeProperDivisors(i);
|
|
end for;
|
|
for i range 1 to 20000 do
|
|
v := countProperDivisors(i);
|
|
if v > max then
|
|
max := v;
|
|
max_i := i;
|
|
end if;
|
|
end for;
|
|
writeln(max_i <& " with " <& max <& " divisors");
|
|
end func;
|