Модуль: Урок 14. Алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел


1. Теория


Сегодня на уроке рассмотрим применение цикла while для нахождения наибольшего общего делителя двух чисел. Наибольший общий делитель (НОД) двух целых чисел — это наибольшее число, на которое можно разделить оба этих числа.
В курсе математики вы научились находить НОД при помощи разложения на множители.  Есть другой метод нахождения НОД - алгоритм Евклида. Существуют два способа нахождения НОД реализации алгоритма Евклида: вычитание и деление. Рассмотрим оба этих варианта.
Алгоритм Евклида с использованием вычитания:
  1. Если числа равны, то любое из них является наибольшим общим делителем.
  2. Если числа не равны, выбираем большее число и вычитаем из него меньшее.
  3. Возвращаемся к шагу 1, но теперь работаем с меньшим числом и результатом вычитания.

Пример, a = 44, b = 60
Итерация Условие a b
    44 60
1 44 != 60 (истина) 44 60-44 = 16
2 44 != 16 (истина) 44-16 = 28 16
3 28 != 16 (истина) 28-16=12 16
4 12 != 16 (истина) 12 16-12=4
5 12 != 4 (истина) 12-4=8 4
6 8 != 4 (истина) 8-4=4 4
  4 != 4 (ложь) Ответ: 4

Реализация алгоритма Евклида с использованием вычитания на Python:
 


Алгоритм Евклида, основанный на делении, является более эффективным методом нахождения наибольшего общего делителя, чем алгоритм, использующий вычитание.
 
  1. Большее число делим на меньшее.
  2. Если остаток от деления равен нулю, то ответ – меньшее число
  3. Если остаток не равен нулю, то большее число заменяем на остаток от деления.
  4. Возвращаемся к шагу 1.

Пример, a = 44, b = 60
Итерация Условие a b
    44 60
1 60 % 44 != 0 (истина) 44 60 % 44 = 16
2 44 % 16 != 0 (истина) 44 % 16 = 12 16
3 16 % 12 != 0 (истина) 12 16 % 12 = 4
  12 % 4 != 0 (ложь) Ответ: 4

 

time 1000 ms
memory 256 Mb

Комментарий учителя