Пусть для целого n>1 функция f(n) равна наименьшему делителю числа n, большему 1. Дан массив a: array [1..n] of 1..maxint. Упорядочить элементы массива а по возрастанию в соответствии со следующим критерием: элемент x считается»большим» элемента y, если f(x) > f(y) — Pascal(Паскаль)

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.