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