Как найти НОД двух чисел: алгоритм Евклида
Дано: числа и . Найти: их наибольший общий делитель, наименьшее общее кратное и коэффициенты Безу.
Рабочий метод - алгоритм Евклида: делим большее число на меньшее с остатком, затем прежний делитель на полученный остаток, и так до нулевого остатка. Последний ненулевой остаток и есть ответ: НОД(1071, 462) = 21, отсюда НОК(1071, 462) = 23 562, а расширенный алгоритм даёт соотношение . Калькулятор сверху прогоняет ту же лестницу делений для любой пары чисел, ниже - решение по шагам.
Решение по шагам
Дано. , .
Найти. , и целые , такие, что .
Шаг 1. Делим большее число на меньшее с остатком.
Остаток 147 не равен нулю, значит останавливаться рано. Новая пара для следующего шага - делитель и остаток текущего шага, то есть 462 и 147.
Шаг 2. Делим прежний делитель на прежний остаток.
Остаток 21 снова ненулевой, поэтому берём следующую пару: 147 и 21.
Шаг 3. Повторяем деление, пока остаток не обнулится.
Остаток стал нулевым, алгоритм закончил работу. Последний ненулевой остаток равен 21, и это ответ первой части задачи.
Всю лестницу удобно вести таблицей: каждая следующая строка забирает делитель и остаток из предыдущей, так что перепутать числа почти невозможно.
| Шаг | Делимое | Делитель | Неполное частное | Остаток |
|---|---|---|---|---|
| 1 | 1071 | 462 | 2 | 147 |
| 2 | 462 | 147 | 3 | 21 |
| 3 | 147 | 21 | 7 | 0 |
Шаг 4. Проверяем ответ. Оба исходных числа обязаны делиться на найденный НОД нацело, а получившиеся частные - быть взаимно простыми:
Деление прошло без остатка, а числа 51 и 22 общих делителей, кроме единицы, не имеют, потому что , а . Значит 21 - именно наибольший общий делитель, а не какой-то промежуточный общий делитель вроде 3 или 7.
Шаг 5. Находим НОК через уже известный НОД. Наименьшее общее кратное не требует отдельного алгоритма: оно связано с НОД произведением самих чисел.
Ответ. , .
Почему алгоритм Евклида работает
Весь метод держится на одном равенстве: если , то
Доказывается оно в две строки. Любой общий делитель чисел и делит и разность , то есть он общий делитель пары . Обратно, любой общий делитель пары делит сумму , то есть он общий делитель пары . Множества общих делителей у двух пар совпадают полностью, а раз совпадают множества, совпадают и их наибольшие элементы.
Дальше работает убывание. Остаток при делении всегда строго меньше делителя, поэтому последовательность строго убывает и состоит из целых неотрицательных чисел. Бесконечно убывать такая последовательность не может, значит через конечное число шагов остаток обязательно станет нулём. В этот момент пара выглядит как , а наибольший общий делитель числа и нуля равен самому числу - на нуль делится всё.
Скорость у метода отличная: число шагов растёт примерно как логарифм меньшего из чисел, худший случай дают соседние числа Фибоначчи. Для пары 1071 и 462 хватило трёх делений, для пары из десятизначных чисел понадобится порядка полусотни. Именно поэтому в вычислительной арифметике НОД ищут Евклидом, а не разложением на множители: разложить большое число на простые несопоставимо дороже, на этой разнице стоит вся асимметричная криптография.
Расширенный алгоритм Евклида и коэффициенты Безу
Соотношение Безу утверждает, что НОД любых двух целых чисел представим в виде с целыми и . Найти эти коэффициенты можно, раскрутив ту же лестницу в обратную сторону. Берём предпоследнюю строку таблицы и выражаем из неё остаток:
Теперь из первой строки выражаем 147 и подставляем вместо него:
Раскрываем скобки и приводим подобные, аккуратно собирая коэффициенты при 1071 и при 462 по отдельности:
Проверка занимает одну строку: , , разность равна 21. Итак, , . Один из коэффициентов почти всегда отрицательный, и это нормально: положительными оба они бывают только в вырожденных случаях.
Коэффициенты Безу нужны не ради красоты. Если , то из равенства сразу следует , то есть - обратный элемент к по модулю . Так находят обратные при расшифровке в схеме Эль-Гамаля и в других системах с открытым ключом, где рядом стоит быстрое возведение в степень по модулю. Тот же расширенный алгоритм решает линейные диофантовы уравнения : они разрешимы ровно тогда, когда делится на .
Второй способ: сравнить разложения на простые множители
Школьный способ выглядит иначе: раскладываем оба числа на простые и берём общие множители в наименьших степенях. Здесь , , общими оказываются тройка и семёрка в первой степени, откуда - тот же ответ. Если взять максимальные степени вместо минимальных, получится НОК: .
Отсюда же видно, почему верна формула связи. Для каждого простого показатели в разложениях складываются: , а произведение по всем простым и даёт . Переключатель графика в калькуляторе сверху показывает ровно эту картинку: столбики показателей для обоих чисел, для их НОД и для НОК. На контрольной способ хорош для двузначных и трёхзначных чисел, но уже для четырёхзначных разложение занимает больше времени, чем три деления Евклидом.
Частые ошибки
- Останавливаются на нулевом остатке и берут его за ответ. Ответ - последний ненулевой остаток. В нашем примере это 21, а не 0.
- Делят не то на то. На каждом шаге делимым становится прежний делитель, а делителем - прежний остаток. Если по инерции продолжить делить исходное число, лестница развалится.
- Путают неполное частное и остаток. В записи частное 2 в дальнейшем не участвует вовсе, работает только остаток 147. Частные понадобятся лишь в расширенном алгоритме.
- Считают НОК как произведение чисел. Произведение кратно обоим числам, но наименьшим кратным не является: делить на НОД обязательно.
- Берут общие простые в наибольших степенях. Во втором способе НОД собирается из минимальных показателей, максимальные дают НОК. Перепутанные минимум и максимум меняют ответы местами.
- Теряют знак в соотношении Безу. При обратной подстановке скобка даёт , и это слагаемое нужно сложить с уже имеющимся , получив 7, а не 6.
FAQ
Чему равен НОД, если одно из чисел делится на другое? Он равен меньшему числу. Например, , потому что первое же деление даёт нулевой остаток, и последним ненулевым остатком оказывается сам делитель. Алгоритм при этом отработает за один шаг.
Что означает НОД, равный единице? Что числа взаимно просты: общих делителей, кроме единицы, у них нет. Дробь из таких чисел уже несократима, а по модулю одного из них второе обратимо, что и используют в криптографии.
Как искать НОД трёх и более чисел? Последовательно и попарно: . Порядок роли не играет, а промежуточные результаты быстро уменьшаются, так что третий и четвёртый шаги обычно совсем короткие.
Изменится ли ответ, если сначала делить меньшее число на большее? Нет. При делении 462 на 1071 неполное частное равно нулю, а остаток - самому числу 462, поэтому первый шаг просто поменяет числа местами и алгоритм пойдёт как обычно. Одно лишнее деление - единственная плата за неверный порядок.
Коротко
- Делим большее число на меньшее с остатком: .
- Повторяем деление для пары «прежний делитель, прежний остаток»: , затем .
- Последний ненулевой остаток - ответ: . Проверка: и взаимно просты.
- НОК считаем через НОД: .
- Коэффициенты Безу получаем обратной подстановкой: .
Похожие задачи
Как найти НОК двух чисел: два способа с примером
Как найти НОК двух чисел на примере 126 и 120: разложение на простые множители со старшими степенями, формула через НОД, проверка ответа и задача про шестерни с зубьями.
Теория чисел/криптографияКак решить уравнение в целых числах: 54x + 21y = 906
Как решить уравнение в целых числах на примере 54x + 21y = 906: проверка разрешимости по НОД, частное решение расширенным алгоритмом Евклида, общее решение с параметром и отбор натуральных.
Теория чисел/криптографияКак решить сравнение по модулю: 42x = 30 (mod 78)
Как решить сравнение по модулю на примере 42x = 30 (mod 78): критерий разрешимости через НОД, число решений, сокращение сравнения вместе с модулем и все шесть классов вычетов.
Теория чисел/криптографияКак найти функцию Эйлера: разбор на числе 7560
Как найти функцию Эйлера: разбор числа 7560 по шагам, каноническое разложение, формула через произведение скобок по простым делителям, проверка мультипликативностью и теорема Эйлера.
Теория чисел/криптографияКак найти обратное по модулю: расширенный алгоритм Евклида
Как найти обратное по модулю: разбор на числах 37 и 120, условие существования через НОД, таблица расширенного алгоритма Евклида, приведение коэффициента и проверка остатка.
Теория чисел/криптографияКак найти первообразный корень: критерий и пример
Как найти первообразный корень по модулю: функция Эйлера, критерий через её простые делители, проверка кандидатов 2, 3, 5 и 6 по модулю 41 и таблица индексов.