Что такое наименьший общий делитель

Что такое наименьший общий делитель

Рассмотрим два способа нахождения наибольшего общего делителя.

Нахождение путём разложения на множители

Первый способ заключается в нахождении наибольшего общего делителя путём разложения данных чисел на простые множители.

Чтобы найти НОД нескольких чисел, достаточно, разложить их на простые множители и перемножить между собой те из них, которые являются общими для всех данных чисел.

Пример 1. Найдём НОД (84, 90).

Раскладываем числа 84 и 90 на простые множители:

Итак, мы подчеркнули все общие простые множители, осталось перемножить их между собой: 1 · 2 · 3 = 6.

Таким образом, НОД (84, 90) = 6.

Пример 2. Найдём НОД (15, 28).

Раскладываем 15 и 28 на простые множители:

Числа 15 и 28 являются взаимно простыми, так как их наибольший общий делитель – единица.

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

Второй способ (иначе его называют способом Евклида) заключается в нахождении НОД путём последовательного деления.

Сначала мы рассмотрим этот способ в применении только к двум данным числам, а затем разберёмся в том, как его применять к трём и более числам.

Если большее из двух данных чисел делится на меньшее, то число, которое меньше и будет их наибольшим общим делителем.

Пример 1. Возьмём два числа 27 и 9. Так как 27 делится на 9 и 9 делится на 9, значит, 9 является общим делителем чисел 27 и 9. Этот делитель является в тоже время и наибольшим, потому что 9 не может делиться ни на какое число, большее 9. Следовательно, НОД (27, 9) = 9.

В остальных случаях, чтобы найти наибольший общий делитель двух чисел используется следующий порядок действий:

  1. Из двух данных чисел большее число делят на меньшее.
  2. Затем, меньшее число делят на остаток, получившийся от деления большего числа на меньшее.
  3. Далее, первый остаток делят на второй остаток, который получился от деления меньшего числа на первый остаток.
  4. Второй остаток делят на третий, который получился от деления первого остатка на второй и т. д.
  5. Таким образом деление продолжается до тех пор, пока в остатке не получится нуль. Последний делитель как раз и будет наибольшим общим делителем.
Читайте также:  Как создать рар архив

Пример 2. Найдём наибольший общий делитель чисел 140 и 96:

1) 140 : 96 = 1 (остаток 44)

2) 96 : 44 = 2 (остаток 8)

3) 44 : 8 = 5 (остаток 4)

Последний делитель равен 4 – это значит, что НОД (140, 96) = 4.

Последовательное деление так же можно записывать столбиком:

Чтобы найти наибольший общий делитель трёх и более данных чисел, используем следующий порядок действий:

  1. Сперва находим наибольший общий делитель любых двух чисел из нескольких данных.
  2. Затем находим НОД найденного делителя и какого-нибудь третьего данного числа.
  3. Затем находим НОД последнего найденного делителя и четвёртого данного числа и так далее.

Пример 3. Найдём наибольший общий делитель чисел 140, 96 и 48. НОД чисел 140 и 96 мы уже нашли в предыдущем примере (это число 4). Осталось найти наибольший общий делитель числа 4 и третьего данного числа – 48:

48 делится на 4 без остатка. Таким образом, НОД (140, 96, 48) = 4.

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

Рассмотрим нахождения НОД на примере двух натуральных чисел 18 и 60:

  • 1 Разложим числа на простые множители:
    18 = 2 × 3 × 3
    60 = 2 × 2 × 3 × 5
  • 2 Вычеркнуть из разложения первого числа все множители которые не входят в разложения второго числа, получим 2 × 3 × 3 .
  • 3 Перемножаем оставшиеся простые множители после вычеркивания и получаем наибольший общий делитель чисел: НОД(18, 60)=2 × 3= 6.
  • 4 Заметим что не важно из первого или второго числа вычеркиваем множители, результат будет одинаков:
    18 = 2 × 3 × 3
    60 = 2 × 2 × 3 × 5
Пример Найти наибольший общий делитель чисел 324, 111 и 432

Разложим числа на простые множители:

324 = 2 × 2 × 3 × 3 × 3 × 3

111 = 3 × 37

432 = 2 × 2 × 2 × 2 × 3 × 3 × 3

Вычеркнуть из первого числа, множители которых нету во втором и третьем числе, получим:

Читайте также:  Видеоредактор для склеивания видео

2 × 2 × 2 × 2 × 3 × 3 × 3 = 3

В результате НОД(324, 111, 432)=3

Нахождение НОД с помощью алгоритма Евклида

Второй способ нахождения наибольшего общего делителя с помощью алгоритма Евклида. Алгоритм Евклида является наиболее эффективным способом нахождения НОД, используя его нужно постоянно находить остаток от деления чисел и применять рекуррентную формулу.

Рекуррентная формула для НОД, НОД(a, b)=НОД(b, a mod b), где a mod b — остаток от деления a на b.

Алгоритм Евклида
Пример Найти наибольший общий делитель чисел 7920 и 594

Найдем НОД(7920, 594) с помощью алгоритма Евклида, вычислять остаток от деления будем с помощью калькулятора.

  1. НОД(7920, 594)
  2. НОД(594, 7920 mod 594) = НОД(594, 198)
  3. НОД(198, 594 mod 198) = НОД(198, )
  4. НОД(198, ) = 198
  • 7920 mod 594 = 7920 — 13 × 594 = 198
  • 594 mod 198 = 594 — 3 × 198 = 0

В результате получаем НОД(7920, 594) = 198

Что такое НОД, все знают еще со школы. Для тех, кто подзабыл, напомню: НОД — наибольший общий делитель, делящий два целых числа без остатка. Например, НОД чисел 100 и 45 равен 5, а НОД чисел 17 и 7 равен 1. Существует несколько различных алгоритмов поиска этого числа. Однако, несмотря на то, что это достаточно простые алгоритмы, часто совершают одну маленькую, но очень существенную ошибку.

Алгоритмы вычисления НОД

Естественно, чаще всего пишут первый вариант — он легко запоминается, быстро пишется и достаточно быстро работает.

Претесты

Реализации корректно работают на таких тестах:

Естественно, они будут работать и на подобных тестах, где в качестве аргументов выступают целые неотрицательные числа. Но что, если…

Первые тесты с подвохом

… если заменить одно из чисел нулем? Например так:

Классический алгоритм Евклида (№3) уже попадает в бесконечный цикл.

Копаем глубже

Согласно определению, НОД может быть определен для любых двух целых чисел. Так почему бы не попробовать тесты, где одно из чисел — отрицательное:

Все становится еще интереснее. Первые две реализации выдают в качестве ответа -5. Третий алгоритм снова попадает в бесконечный цикл. Вместе с ним в бесконечном цикле оказывается пятый алгоритм. Четвертый падает по StackOverFlow — скорее всего тоже попадает в бесконечный цикл.
Но ведь ответ -5 — неправильный. По определению НОД — наибольший общий делитель. А таковым является число 5. Ведь и первое, и второе число делятся без остатка на 5. Значит и первые две реализации не дают верный ответ.

Читайте также:  Примеры с градусами минутами и секундами
Почему решения №№3-5 попадают в бесконечный цикл?

Алгоритм Евклида попадает в цикл из-за бесконечного увеличения аргументов, если один из них отрицательный. Действительно, если посмотреть на эти строки, то можно заметить, что при отрицательном a (или b) операция вычитания заменяется сложением.

Аналогичное происходит в четвертом и пятом алгоритме:

В ситуации, когда a или b равны , то происходит бесконечное вычитание нуля, которое никаким образом не меняет значения аргументов.

Так что же не так?

Все эти алгоритмы корректны для входных данных, когда оба числа a и b — целые неотрицательные числа. Но вспомним еще раз — НОД существует для любых двух целых чисел.

Что же делать?

В качестве аргументов в функцию можно передавать абсолютное значение чисел, тогда ответ будет корректен:

Второй способ решения задачи — возвращать абсолютное значение ответа:

Второй вариант гораздо предпочтительнее: будет производиться меньше лишних вычислений, чем в первом варианте.

Итоги

Мы рассмотрели пять различных вариантов вычисления наибольшего общего делителя. Для каждого из них мы указали входные данные, на которых ответ существует, но решение «падает», а также способ решения проблемы.
Такие небольшие ошибки чаще всего допускаются по причине того, что не замечают «скользкие» места решения какой-то задачи. Часть из них отлавливается в процессе тестирования, а часть остается незамеченной.
В ситуации с вычислением НОД почти все реализации приведены с ошибкой. В Сети я нашел лишь парочку корректно работающих решений, остальные идентичны тем, что приведены в начале поста.

Ссылка на основную публикацию
Что делать если завис телефон андроид
Что делать, если завис Андроид и не реагирует не на что? В этой статье мы посмотрим четыре простых способа как...
Фум лента в стоматологии фото
Автор: G. Freedman Перевод: Александр Зыбайло Автор: G. Freedman Перевод: Александр Зыбайло Ограничение количества цемента для фиксации и использование определенной...
Функции жесткого диска в компьютере
Жесткий диск, он же винчестер, является основным местом, где хранится вся информация. В отличие от оперативной памяти, он энергетически независим,...
Что дают за рейтинговые бои
В кои-то веки разработчики решили прислушаться к мнению игроков и ввести в Варфейс рейтинговые матчи. Теперь каждый игрок, достигший 26...
Adblock detector