Помогите пожалуйста с задачей:
Определить, является ли заданное натуральное число совершенным, т.е. Равным сумме всех своих (положительных) делителей, кроме самого этого числа (напр. Число 6 совершенно: 6=1+2+3).
Var
i, n: LongInt;
s: LongInt;
BEGIN
Write( 'Enter the number:' );
ReadLn(n);
s := 1;
For i := 2 To (n div 2) Do
If (n mod i) = 0 Then Inc(s, i);
If s = n Then
WriteLn( 'Yes.' )
Else
WriteLn( 'No.' );
END.
program PerfNum2;
var
n: LongInt;
begin
Write('n>');
Readln(n);
if (n = 6) or (n = 28) or (n = 496) or (n = 8128) or (n = 33550336) then
Writeln('Число ', n, ' - совершенное')
else
Writeln('Число ', n, ' не является совершенным');
end.
while x<>0 do begin
writeln(x mod 10);
x:=x div 10;
end;
Program semestr;
var i,n,s,z:Integer;
begin
writeln('DANNAJA PROGRAMMA HAXODIT COBEPSHEHHIE CHISLA');
WRITELN('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^');
writeln('vvedite chislo');
readln(n);
if n<6 then writeln('sovversh chisel net')
else
writeln('Perfect Chisla menshie n');
for z:=6 to n do begin
s:=1;
for i:=2 to (z div 2) do
if (z mod i) = 0 then inc(s,i);
If s=z then begin
writeln(z);
while s<>0 do begin
writeln(s mod 10, ' ');
s:=s div 10;
end;
end;
end;
readln;
end.
while s<>0 do begin
writeln(s mod 10, ' ');
s:=s div 10;
end;
while s<>1 do begin
for i:=1 to s do if s mod i=0 then begin
write(i,' ');
s:=s div i;
end;
end;
Program semestr;
var i,n,s,z:Integer;
elem_ix: integer;
elem: array[1 .. 200] of integer;
begin
writeln('DANNAJA PROGRAMMA HAXODIT COBEPSHEHHIE CHISLA');
WRITELN('^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^');
write('vvedite chislo'); readln(n);
if n<6 then writeln('sovversh chisel net')
else writeln('Perfect Chisla menshie n');
for z:=6 to n do begin
s:=1;
elem_ix := 0;
for i:=2 to (z div 2) do
begin
if (z mod i) = 0 then
begin
inc(s,i);
inc(elem_ix); elem[elem_ix] := i;
end;
end;
If s=z then begin
write(z, ' = ');
write('1+');
for i := 1 to elem_ix do
begin
write(elem[i]);
if i <> elem_ix then write('+')
end;
writeln
end;
{readln;}
end;
end.