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

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

  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
Похожие ответы