Найти НОД трех заданных натуральных чисел - 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).
- Результат выводится на экран.