Найти НОД трех заданных натуральных чисел - Free Pascal
Формулировка задачи:
Найти НОД трех заданных натуральных чисел
Решение задачи: «Найти НОД трех заданных натуральных чисел»
textual
Листинг программы
- program test;
- function GCD(m, n: integer): integer;
- var
- k: integer; {множитель}
- Evens: integer; {чётность чисел m и n}
- begin
- k := 1;
- repeat
- if (n = 0) or (m = 0) then
- begin
- GCD := k * (n + m);
- Break;
- end;
- if (n = m) then
- begin
- GCD := k * n;
- Break;
- end;
- if (n = 1) or (m = 1) then
- begin
- GCD := k * 1;
- Break;
- end;
- Evens := 0;
- if Odd(n) then
- Evens := 1;
- if Odd(m) then
- Evens := Evens + 2;
- case Evens of
- 0:
- begin
- k := k * 2;
- m := m div 2;
- n := n div 2;
- end;
- 1:
- begin
- m := m div 2;
- end;
- 2:
- begin
- n := n div 2;
- end;
- 3:
- begin
- if n > m then
- n := (n - m) div 2
- else
- m := (m - n) div 2;
- end;
- end;
- until False;
- end;
- var
- a, b, c: integer;
- begin
- a := 48;
- b := 64;
- c := 910;
- writeln(GCD(GCD(a, b),c));
- end.
Объяснение кода листинга программы
- Программа на языке Free Pascal.
- Функция GCD(m, n) находит НОД (наибольший общий делитель) двух целых чисел m и n.
- В функции используется цикл while, который выполняется до тех пор, пока n не станет равным 0.
- Переменная k инициализируется единицей.
- Если n равно 0, то GCD вычисляется как k*m и функция возвращается.
- Если m равно 0, то GCD вычисляется как k*n и функция возвращается.
- Если m равно n, то GCD вычисляется как k*n и функция возвращается.
- Если m равно 1 или n равно 1, то GCD вычисляется как k и функция возвращается.
- Переменная Evens инициализируется 0.
- Если n нечетное число, то Evens становится равным 1.
- Если m нечетное число, то Evens становится равным 2.
- Если Evens равно 0, то k умножается на 2 и m делится на 2, а n делится на 2 и цикл повторяется.
- Если Evens равно 1, то только m делится на 2 и цикл повторяется.
- Если Evens равно 2, то только n делится на 2 и цикл повторяется.
- Если Evens равно 3, то выполняется проверка, если n больше m, то n делится на 2, иначе m делится на 2 и цикл повторяется.
- В основной программе задаются значения переменных a, b и c.
- Вызывается функция GCD с аргументами GCD(GCD(a, b),c).
- Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д