uses crt;
type natur=1..maxint;{объявим тип по условию}
function F(n:natur):natur;
var d,i:natur;
begin
if n=1 then d:=1
else
begin
i:=2;{начнем с 2}
while i<=n do{и до числа}
if n mod i=0 then{ищем на что делится}
begin
d:=i;{нашли первое число}
break;{дальше не ищем, выходим из цикла}
end
else i:=i+1;{иначе дальше}
end;
F:=d;{значение функции}
end;
const nmax=100;
var a:array[1..nmax] of natur;
n,i,j,x:natur;
begin
clrscr;
randomize;
write('Размер массива до ',nmax,' n=');
readln(n);
writeln('Исходный массив:');
for i:=1 to n do
begin
a[i]:=random(50)+2;
write(a[i]:3);
end;
writeln;
writeln;
for i:=1 to n-1 do{сортировка обменом по условию}
for j:=i+1 to n do
if F(a[i])>F(a[j]) then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
writeln('Сортировка по возрастанию наименьшего делителя:');
for i:=1 to n do
write(a[i]:3);
readln
end.
readln
end.