СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Методическая разработка

Категория: Информатика

Нажмите, чтобы узнать подробности

Поиск наибольшего общего делителя двух чисел

Просмотр содержимого документа
«Методическая разработка»

Алгоритм Евклида - нахождение наибольшего общего делителя

Алгоритм Евклида – это алгоритм нахождения наибольшего общего делителя (НОД) пары целых чисел.

Наибольший общий делитель (НОД) – это число, которое делит без остатка два числа и делится само без остатка на любой другой делитель данных двух чисел. Проще говоря, это самое большое число, на которое можно без остатка разделить два числа, для которых ищется НОД.

Алгоритм нахождения НОД делением

  1. Большее число делим на меньшее.

  2. Если делится без остатка, то меньшее число и есть НОД (следует выйти из цикла).

  3. Если есть остаток, то большее число заменяем на остаток от деления.

  4. Переходим к пункту 1.

Пример:
Найти НОД для 30 и 18.
30 / 18 = 1 (остаток 12)
18 / 12 = 1 (остаток 6)
12 / 6 = 2 (остаток 0) 
Конец: НОД – это делитель 6.
НОД (30, 18) = 6

Алгоритм нахождения НОД вычитанием

  1. Из большего числа вычитаем меньшее.

  2. Если получается 0, то значит, что числа равны друг другу и являются НОД (следует выйти из цикла).

  3. Если результат вычитания не равен 0, то большее число заменяем на результат вычитания.

  4. Переходим к пункту 1.

Пример:
Найти НОД для 30 и 18.
30 - 18 = 12
18 - 12 = 6
12 - 6 = 6
6 - 6 = 0
Конец: НОД – это уменьшаемое или вычитаемое.
НОД (30, 18) = 6











Задание 2. Используя алгоритм Евклида, найти НОД двух чисел.

Решение.

Рассмотрим блок-схему алгоритма Евклида:

Алгоритм Евклида

Запишем данной алгоритм с помощью Паскаля, опираясь на данную блок-схему. Как видим, у нас имеется цикл с предусловием (MN). Внутри цикла еще одно условие (MN), т.е. оператор IF… THEN.

Program zada4a2;

var M, N: integer;

begin

writeln('Введите М и N');

readln(M, N);

while MN do

begin

if MN

then M:=M-N

else N:=N-M;

end;

write('Н0Д = ',М);

end.