Вывести в порядке возрастания все правильные дроби, знаменатели которых не превышают 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
. - Программа завершается после выполнения всех итераций циклов и выводит результат.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д