Вот примерное решение. Сделал отладочный вывод на экран, чтобы можно было проследить за правильностью. Погляди, кажется должно удовлетворять всем условиям.
Code
Program Iteracy;
Uses CRT;
Const infile = 'input.txt';
outfile = 'output.txt';
Var n: LongInt;
i: Integer;
f: text;
Begin
ClrScr;
Assign(f, infile);
ReSet(f);
Readln(f, n);
Close(f);
i := 0;
While (n <> 1) do
Begin
If (n mod 3 = 0) then Begin
Inc(i);
Write(i,'. ',n,' / 3 = ');
n := n div 3;
Writeln(n);
End
Else
If (n mod 2 = 0) then Begin
Inc(i);
Write(i,'. ',n,' / 2 = ');
n := n div 2;
Writeln(n);
End
Else Begin
Inc(i);
Write(i,'. ',n,' - 1 = ');
n := n - 1;
Writeln(n);
End;
End;
Writeln(#13#10,'Итого: ',i,' операций');
Assign(f, outfile);
ReWrite(f);
Writeln(f,i);
Close(f);
Readkey;
End.
P.S. Проверку на <100000 не делал, можешь сделать сам.