1. Для цикла For есть решение выложенное выше от Srzontmp.
2. Почти ничего не меня получим код для цикла while:
var
i, n, k: integer;
begin
i := 2;
readln(n);
while i <= n div 2 do begin<br> if (n mod i) = 0 then k := i;
i:=i+1;
end;
writeln('наибольший делитель ', n, ' = ', k);
end.
3. Аналогично для цикла Repeat:
var
i, n, k: integer;
begin
i := 2;
readln(n);
repeat
if (n mod i) = 0 then k := i;
i:=i+1;
until i> n div 2;
writeln('наибольший делитель ', n, ' = ', k);
end.