Найти НОД трех заданных натуральных чисел - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Найти НОД трех заданных натуральных чисел

Решение задачи: «Найти НОД трех заданных натуральных чисел»

textual
Листинг программы
  1. program test;
  2.  
  3.   function GCD(m, n: integer): integer;
  4.   var
  5.     k: integer; {множитель}
  6.     Evens: integer; {чётность чисел m и n}
  7.   begin
  8.     k := 1;
  9.     repeat
  10.        if (n = 0) or (m = 0) then
  11.       begin
  12.         GCD := k * (n + m);
  13.         Break;
  14.       end;
  15.       if (n = m) then
  16.       begin
  17.         GCD := k * n;
  18.         Break;
  19.       end;
  20.       if (n = 1) or (m = 1) then
  21.       begin
  22.         GCD := k * 1;
  23.         Break;
  24.       end;
  25.       Evens := 0;
  26.       if Odd(n) then
  27.         Evens := 1;
  28.       if Odd(m) then
  29.         Evens := Evens + 2;
  30.       case Evens of
  31.         0:
  32.         begin
  33.           k := k * 2;
  34.           m := m div 2;
  35.           n := n div 2;
  36.         end;
  37.         1:
  38.         begin
  39.           m := m div 2;
  40.         end;
  41.         2:
  42.         begin
  43.           n := n div 2;
  44.         end;
  45.         3:
  46.         begin
  47.           if n > m then
  48.             n := (n - m) div 2
  49.           else
  50.             m := (m - n) div 2;
  51.         end;
  52.       end;
  53.     until False;
  54.   end;
  55.  
  56. var
  57.   a, b, c: integer;
  58. begin
  59.   a := 48;
  60.   b := 64;
  61.   c := 910;
  62.   writeln(GCD(GCD(a, b),c));
  63. end.

Объяснение кода листинга программы

  1. Программа на языке Free Pascal.
  2. Функция GCD(m, n) находит НОД (наибольший общий делитель) двух целых чисел m и n.
  3. В функции используется цикл while, который выполняется до тех пор, пока n не станет равным 0.
  4. Переменная k инициализируется единицей.
  5. Если n равно 0, то GCD вычисляется как k*m и функция возвращается.
  6. Если m равно 0, то GCD вычисляется как k*n и функция возвращается.
  7. Если m равно n, то GCD вычисляется как k*n и функция возвращается.
  8. Если m равно 1 или n равно 1, то GCD вычисляется как k и функция возвращается.
  9. Переменная Evens инициализируется 0.
  10. Если n нечетное число, то Evens становится равным 1.
  11. Если m нечетное число, то Evens становится равным 2.
  12. Если Evens равно 0, то k умножается на 2 и m делится на 2, а n делится на 2 и цикл повторяется.
  13. Если Evens равно 1, то только m делится на 2 и цикл повторяется.
  14. Если Evens равно 2, то только n делится на 2 и цикл повторяется.
  15. Если Evens равно 3, то выполняется проверка, если n больше m, то n делится на 2, иначе m делится на 2 и цикл повторяется.
  16. В основной программе задаются значения переменных a, b и c.
  17. Вызывается функция GCD с аргументами GCD(GCD(a, b),c).
  18. Результат выводится на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы