НОД (10 693, 2220) = НОД (2220, 1813) = НОД (1813, 407) = НОД (407, 185) = НОД (185, 37) = 37.
Мы нашли наибольший общий делитель 10693 и 2220, проделав всего пять операций деления!
Алгоритм Евклида для поиска наибольшего общего делителя[140] можно сформулировать так:
Поиск НОД: алгоритм Евклида
На входе: два положительных целых числа a и b.
На выходе: НОД (a, b).
1. Найти частное q и остаток c при делении a на b.
2. Если c = 0, то НОД (a, b) = b.
3. В противном случае вычислить НОД (b, c) = НОД (a, b).
Проверьте, насколько хорошо вы усвоили алгоритм Евклида, и вычислите НОД (1309, 1105). Можете воспользоваться калькулятором. Сверьтесь с ответом в конце главы.
Наименьшее общее кратное
Концепция наибольшего общего делителя тесно связана с концепцией наименьшего общего кратного. Для двух положительных целых чисел (допустим, 10 и 15) наименьшее общее кратное – это самое маленькое положительное целое число, которое делится на то и на другое; в нашем случае ответ равен 30. Мы будем использовать обозначение НОК (a, b).
Наименьшее общее кратное полезно при сложении дробей. Например, для сложения 1/10 и 1/15 вначале нужно привести обе дроби к общему знаменателю. Это может быть любое число, которое делится на 10 и на 15; проще всего найти НОК. Так как НОК (10, 15) = 30, то
Найти наименьшее общее кратное для маленьких чисел не слишком сложно, но как быть с большими числами? Скажем, чему равно наименьшее общее кратное 364 и 286?
Один вариант состоит в том, чтобы последовательно выписывать числа, кратные первому и второму, и уповать, что рано или поздно они совпадут[141]:
числа, кратные 364 → 364, 728, 1092, 1456, 1820, 2184, …
числа, кратные 286 → 286, 572, 858, 1144, 1430, 1716, 2002, …
Вскоре мы дойдем до 4004 и запишем ответ: НОК (364, 286) = 4004.
Вот еще одна идея. Разложим 364 и 286 на простые множители:
364 = 2 × 2 × 7 × 13;
286 = 2 × 11 × 13.
Числа, кратные 364, должны делиться на 2 × 2 × 7 × 13, а числа, кратные 286, должны делиться на 2 × 11 × 13. При конструировании наименьшего общего кратного мы должны воспользоваться этими простыми числами – два раза по 2, затем 7, 11 и 13 (нам ни к чему брать два раза по 13):
2 × 2 × 7 × 11 × 13 = 4004.
Разумеется, 4004 и есть наименьшее общее кратное 364 и 286.
Этот метод выглядит потрясающе, однако – как я уже объяснил в главе 1 – мы не знаем эффективного алгоритма разложения больших чисел на простые множители.
Хотя разложение на простые множители не дает достаточно эффективного алгоритма вычисления НОК двух чисел, оно делает важную подсказку. Давайте сравним, как используется разложение на множители при вычислении НОК и НОД.
Вот семь простых множителей двух чисел, взятые вместе:
Мы находим НОД (364, 286) с помощью двух общих простых делителей: 2 и 13.
Для вычисления НОК (364, 286) нам нужны все простые числа в двух списках, хотя нет нужды брать два раза по 13 (достаточно одного) и три раза по 2 (достаточно двух). Иными словами, мы берем каждое простое число из того списка, где оно встретилось большее число раз. Таким образом, нам нужны пять чисел: 2, 2, 7, 11 и 13.
Проверяем:
НОД (364, 286) = 26 = 2 × 13;
НОК (364, 286) = 4004 = 2 × 2 × 7 × 11 × 13.