Perfect numbers: Difference between revisions

no edit summary
No edit summary
Line 481:
return Sum = N;
end Is_Perfect;</lang>
 
=={{header|ALGOL 60}}==
{{works with|A60}}
<lang algol60>
begin
 
comment - return p mod q;
integer procedure mod(p, q);
value p, q; integer p, q;
begin
mod := p - q * entier(p / q);
end;
 
comment - return true if n is perfect, otherwise false;
boolean procedure isperfect(n);
value n; integer n;
begin
integer sum, f1, f2;
sum := 1;
f1 := 2;
for f1 := f1 while (f1 * f1) < n do
begin
if mod(n, f1) = 0 then
begin
sum := sum + f1;
f2 := n / f1;
if f2 > f1 then sum := sum + f2;
end;
f1 := f1 + 1;
end;
isperfect := (sum = n);
end;
 
comment - exercise the procedure;
integer i, found;
outstring(1,"Searching up to 10000 for perfect numbers\n");
found := 0;
for i := 2 step 1 until 10000 do
if isperfect(i) then
begin
outinteger(1,i);
found := found + 1;
end;
outstring(1,"\n");
outinteger(1,found);
outstring(1,"perfect numbers were found");
 
end
</lang>
{{out}}
<pre>
Searching up to 10000 for perfect numbers
6 28 496 8128
4 perfect numbers were found
</pre>
 
=={{header|ALGOL 68}}==
211

edits