Даны натуральное число n, целые числа а1, а2, …, аn. Рассмотреть все отрезки последовательности а1, а2, …, аn (подпоследовательности идущих подряд членов), состоящие из совершенных чисел. Определить подпрограмму, позволяющую распознать совершенные числа — Pascal(Паскаль)

uses crt;
function Sov(x:longint):boolean;
var j,k:longint;
begin
k:=0;
for j:=1 to x div 2 do
if x mod j=0 then k:=k+j;
if k=x then Sov:=true else Sov:=false;
end;
var a:array[1..100] of integer;
    n,i,max,k,j:integer;
begin
clrscr;
write('n=');readln(n);
writeln('Введите последовательность из ',n,' чисел:');
for i:=1 to n do
  begin
    write('a[',i,']=');
    readln(a[i]);
  end;
clrscr;
writeln('Massiv:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
writeln('Последовательности совершенных чисел:');
max:=0;
i:=1;
while i<=n do
if Sov(a[i])then
 begin
  k:=1;j:=i;
  while Sov(a[j])and(j<=n)do
   begin
    write(a[j],' ');
    j:=j+1;
    k:=k+1;
   end;
  writeln;
  if k>max then max:=k-1;
  i:=i+k;
 end
else i:=i+1;
if max=0 then write('В массиве нет совершенных чисел!')
else write('Максимальная длина последовательности=',max);
readln
end.

Leave a Comment

37 − = 36