program oken;
uses crt;
type mang = array[1..100] of integer;
var a: mang;
n,k: integer;
function nhap(n: integer; var a: mang):mang;
var i: integer;
begin
for i:=1 to n do
begin
write('a[',i,']: ');
readln(a[i]);
end;
nhap:=a;
end;
procedure xuat(a: mang;n:integer);
var i: integer;
begin
for i:=1 to n do
write(a[i],' ');
end;
function nt(a: mang;n: integer; var k: integer): mang;
var i,dem,j: integer;
b: mang;
begin
k:=0;
for j:=1 to n do
begin
dem:=0;
for i:=2 to a[j] do
if (a[j] mod i=0) then
dem := dem +1;
if dem=1 then
begin
k:=k+1;
b[k]:=a[j];
end;
end;
nt:=b;
end;
procedure ht(a: mang;n:integer);
var i,j:integer; s: longint;
begin
for i:=1 to n do
begin
s:=0;
for j:=1 to (a[i] div 2) do
if (a[i] mod j=0) then
s:=s+j;
if s=a[i] then
write(a[i],' ')
end;
end;
begin
clrscr;
write('Nhap so phan tu cua mang: '); readln(n);
nhap(n,a);
write('Mang vua nhap: ');xuat(a,n); writeln;
write('Cac so nguyen to trong day: '); xuat(nt(a,n,k),k); writeln;
write('Cac so hoan thien trong day: '); ht(a,n);
readln;
end.