Пусть m/n - текущая несократимая дробь. Покажем, как найти следующую по значению дробь. Понятно, что она будет среди несократимых дробей вида k/p, где p может принимать значения от 2 до 15. Учитывая условие k/p>m/n, можно для каждого p прямо вычислять минимальное значение k следующим образом: k=m*p/n+1. При этом каждая дробь k/p, полученная описанным образом, несократима. Приведем текст программы:
Program Problem2; Var m,n,i,j,p,k:Word; Begin m:=0; {Начальные значения} n:=1; {числителя и знаменателя} Repeat i:=1; {Эти переменные будут} j:=1; {хранить новые значения числителя и знаменателя} For p:=2 To 15 Do Begin k:=m*p div n + 1; If k*jThen Begin {Получение} i:=k; {новых } j:=p; {значений } End; End; m:=i; {Их вывод и запоминание} n:=j; {для получения новой дроби} Write(m,'/',n,' '); Until i>=j; WriteLn; End.