(Настоятельный совет по какому-то, хотя бы показанному ниже, оформлению)
В следующий раз оформляйте код вот так:
// A — входное число
// Y — искомый делитель, R — остаток от деления X на Y, Q — второй делитель <= Y
Y := A - 1;
R := A;
while (Y > 0) and (R <> 0) do begin
Y := Y - 1;
R := A;
Q := 0;
while Y <= R do begin
R := R - Y;
Q := Q + 1;
end; // чтобы не было ошибок, если придётся добавить операторы после этого, лучше ; ставить всегда
end;
(Если это Pascal/Delphi, присваивание ведь записываться должно
:=, а иначе надо другой (Algol, что ли?) будет вписать.)
Теперь легче разбираться в коде. И инвариант внешнего цикла найти, думаю.
P. S. Странно, что-то со скобками.