Вывести в порядке возрастания все правильные дроби, знаменатели которых не превышают n - Free Pascal
Формулировка задачи:
Для заданного натурального значения n вывести в порядке возрастания все правильные дроби, знаменатели которых не превышают n.
Решение задачи: «Вывести в порядке возрастания все правильные дроби, знаменатели которых не превышают n»
textual
Листинг программы
uses crt;
function NOD(a,b:integer):integer;
begin
while a<>b do
if a>b then a:=a-b else b:=b-a;
NOD:=a
end;
var i,j,n:integer;
begin
clrscr;
write('n=');
readln(n);
for i:=2 to n do
for j:=1 to i-1 do
if NOD(i,j)=1
then write(j,'/',i,' ');
readln
end.
Объяснение кода листинга программы
- В функции NOD(a,b:integer):integer; выполняется поиск НОД(наибольшего общего делителя) двух целых чисел a и b.
- Переменная i используется в цикле для первого параметра функции NOD, а переменная j — для второго параметра.
- Цикл for i:=2 to n do начинается с i=2 и выполняется до тех пор, пока i меньше или равно n.
- Цикл for j:=1 to i-1 do начинается с j=1 и выполняется до тех пор, пока j меньше i-1.
- Если NOD(i,j)=1, то это означает, что i и j являются делителями друг друга, и программа выводит их в формате
j/i. - Переменная n содержит число, которое считывается с помощью readln(n).
- Цикл for i:=2 to n do выполняет поиск всех делителей числа n, начиная с 2 и до n.
- Цикл for j:=1 to i-1 do проверяет все числа от 1 до i-1 на предмет того, являются ли они делителями числа n.
- Если функция NOD(a,b:integer):integer; возвращает 1, то это означает, что a и b являются делителями друг друга, и программа выводит их в формате
j/i. - Программа завершается после выполнения всех итераций циклов и выводит результат.