Евклидов алгоритм - Euclidean algorithm

Метод Евклида для нахождения наибольшего общего делителя (НОД) двух начальных длин BA и DC, которые определены как кратные общей «единичной» длины. Поскольку длина DC короче, она используется для «измерения» BA, но только один раз, потому что остаток EA меньше DC. EA теперь измеряет (в два раза) более короткую длину DC, а остаток FC короче, чем EA. Затем FC измеряет (трижды) длину EA. Поскольку остатка нет, процесс завершается тем, что FC является GCD. Справа Никомах Пример с числами 49 и 21, результатом которых является их НОД 7 (получено из Heath 1908: 300).

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

Алгоритм Евклида основан на том принципе, что наибольший общий делитель двух чисел не меняется, если большее число заменяется его разностью с меньшим числом. Например, 21 - это НОД 252 и 105 (как 252 = 21 × 12 и 105 = 21 × 5), и то же число 21 также является НОД 105 и 252 - 105 = 147. Поскольку эта замена уменьшает большее из двух чисел, повторение этого процесса дает последовательно меньшие пары чисел, пока два числа не станут равными. Когда это происходит, они являются НОД исходных двух чисел. К поменять шаги или используя расширенный алгоритм Евклида, НОД можно выразить как линейная комбинация двух исходных чисел, то есть суммы двух чисел, каждое из которых умножено на целое число (Например, 21 = 5 × 105 + (−2) × 252). Тот факт, что НОД всегда можно выразить таким образом, известен как Личность Безу.

Версия алгоритма Евклида, описанная выше (и Евклидом), может предпринять много шагов вычитания, чтобы найти НОД, когда одно из заданных чисел намного больше другого. Более эффективная версия алгоритма сокращает эти шаги, вместо этого заменяя большее из двух чисел его остатком при делении на меньшее из двух (в этой версии алгоритм останавливается при достижении нулевого остатка). Благодаря этому усовершенствованию алгоритм никогда не требует больше шагов, чем пятикратное количество цифр (основание 10) меньшего целого числа. Это было доказано Габриэль Ламе в 1844 году и знаменует собой начало теория сложности вычислений. Дополнительные методы повышения эффективности алгоритма были разработаны в ХХ веке.

Алгоритм Евклида имеет множество теоретических и практических приложений. Используется для уменьшения фракции к их самая простая форма и для выполнения разделение в модульная арифметика. Вычисления с использованием этого алгоритма являются частью криптографические протоколы которые используются для защиты Интернет коммуникации и методы взлома этих криптосистем путем факторинг больших составных чисел. Алгоритм Евклида можно использовать для решения Диофантовы уравнения, например, поиск чисел, удовлетворяющих множественным сравнениям в соответствии с Китайская теорема об остатках, строить непрерывные дроби, и найти точные рациональные приближения к действительным числам. Наконец, его можно использовать в качестве основного инструмента для доказательства теорем в теория чисел Такие как Теорема Лагранжа о четырех квадратах и единственность простых факторизаций. Первоначальный алгоритм был описан только для натуральных чисел и геометрической длины (действительных чисел), но алгоритм был обобщен в 19 веке для других типов чисел, таких как Гауссовские целые числа и многочлены одной переменной. Это привело к современному абстрактная алгебраическая такие понятия, как Евклидовы области.

Фон: наибольший общий делитель

Алгоритм Евклида вычисляет наибольший общий делитель (НОД) двух натуральные числа а и б. Наибольший общий делитель грамм это наибольшее натуральное число, которое делит оба а и б не оставляя остатка. Синонимы к GCD включают наибольший общий делитель (GCF), наивысший общий фактор (HCF), старший общий делитель (HCD), а наибольшая общая мера (GCM). Наибольший общий делитель часто записывается как gcd (аб) или, проще, как (аб),[1] хотя последнее обозначение неоднозначно, оно также используется для таких понятий, как идеальный в кольцо целых чисел, который тесно связан с GCD.

Если gcd (аб) = 1, то а и б как говорят совмещать (или относительно простые).[2] Это свойство не означает, что а или же б сами простые числа.[3] Например, ни 6, ни 35 не являются простыми числами, так как они оба имеют два простых множителя: 6 = 2 × 3 и 35 = 5 × 7. Тем не менее, 6 и 35 взаимно просты. Никакое натуральное число, кроме 1, не делит 6 и 35, так как у них нет общих простых делителей.

«Высокий тонкий прямоугольник, разделенный на сетку квадратов. Прямоугольник - два квадрата в ширину и пять квадратов в высоту».
Прямоугольник 24 на 60 покрыт десятью квадратными плитками 12 на 12, где 12 - это НОД 24 и 60. В общем, а-к-б прямоугольник можно покрыть квадратными плитками со стороной c только если c является общим делителем а и б.

Позволять грамм = gcd (аб). С а и б оба кратны грамм, их можно написать а = мг и б = нг, и нет большего числа грамм > грамм для чего это правда. Натуральные числа м и п должны быть взаимно простыми, поскольку любой общий фактор может быть исключен из м и п сделать грамм больше. Таким образом, любое другое число c что разделяет оба а и б должен также разделить грамм. Наибольший общий делитель грамм из а и б является единственным (положительным) общим делителем числа а и б который делится на любой другой общий делитель c.[4]

НОД можно визуализировать следующим образом.[5] Рассмотрим прямоугольную область а к б, и любой общий делитель c что разделяет оба а и б точно. Стороны прямоугольника можно разделить на отрезки длины c, который делит прямоугольник на сетку квадратов со стороной c. Наибольший общий делитель грамм это наибольшее значение c для которых это возможно. Для иллюстрации прямоугольную область 24 на 60 можно разделить на сетку из: квадратов 1 на 1, квадратов 2 на 2, квадратов 3 на 3, квадратов 4 на 4, 6 на -6 квадратов или 12 на 12 квадратов. Следовательно, 12 - это наибольший общий делитель 24 и 60. Прямоугольную область 24 на 60 можно разделить на сетку из квадратов 12 на 12, с двумя квадратами вдоль одного края (24/12 = 2) и пятью квадраты по другой (60/12 = 5).

НОД двух чисел а и б представляет собой произведение простых множителей, общих для двух чисел, где один и тот же простой множитель может использоваться несколько раз, но только до тех пор, пока произведение этих множителей делит оба а и б.[6] Например, поскольку 1386 можно разложить на 2 × 3 × 3 × 7 × 11, а 3213 можно разложить на 3 × 3 × 3 × 7 × 17, наибольший общий делитель 1386 и 3213 равен 63 = 3 × 3 × 7, произведение их общих простых факторов. Если два числа не имеют общих простых делителей, их наибольший общий делитель равен 1 (получен здесь как пример пустой продукт ), другими словами, они взаимно просты. Ключевым преимуществом алгоритма Евклида является то, что он может эффективно находить НОД без вычисления простых множителей.[7][8] Факторизация больших целых чисел считается вычислительно очень сложной задачей, а безопасность многих широко используемых криптографические протоколы основано на его невозможности.[9]

Другое определение НОД полезно в продвинутой математике, особенно в теория колец.[10] Наибольший общий делитель грамм двух ненулевых чисел а и б также является их наименьшей положительной целочисленной линейной комбинацией, то есть наименьшим положительным числом вида ua + vb куда ты и v целые числа. Множество всех целых линейных комбинаций а и б фактически совпадает с набором всех кратных грамм (мг, куда м является целым числом). На современном математическом языке идеальный создано а и б идеал, порожденныйграмм один (идеал, порожденный одним элементом, называется главный идеал, а все идеалы целых чисел являются главными идеалами). Некоторые свойства НОД на самом деле легче увидеть с помощью этого описания, например тот факт, что любой общий делитель а и б также делит НОД (он делит оба члена ua + vb). Эквивалентность этого определения GCD другим определениям описывается ниже.

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

gcd (абc) = gcd (а, gcd (бc)) = gcd (gcd (аб), c) = gcd (gcd (аc), б).

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

Описание

Процедура

Алгоритм Евклида состоит из ряда шагов, так что выходные данные каждого шага используются в качестве входных данных для следующего. Позволять k быть целым числом, которое считает шаги алгоритма, начиная с нуля. Таким образом, начальный шаг соответствует k = 0, следующий шаг соответствует k = 1 и так далее.

Каждый шаг начинается с двух неотрицательных остатков рk−1 и рk−2. Поскольку алгоритм гарантирует, что остатки неуклонно уменьшаются с каждым шагом, рk−1 меньше, чем его предшественник рk−2. Цель k-й шаг - найти частное qk и остаток рk которые удовлетворяют уравнению

и что 0 ≤ рk < рk−1. Другими словами, кратные меньшему числу рk−1 вычитаются из большего числа рk−2 до остатка рk меньше чем рk−1.

На начальном этапе (k = 0) остатки р−2 и р−1 равный а и б, числа, для которых ищется НОД. На следующем шаге (k = 1) остатки равны б а остальное р0 начального шага и т. д. Таким образом, алгоритм можно записать в виде последовательности уравнений

Если а меньше чем б, первый шаг алгоритма меняет местами числа. Например, если а < б, начальное частное q0 равен нулю, а остаток р0 является а. Таким образом, рk меньше, чем его предшественник рk−1 для всех k ≥ 0.

Поскольку остатки уменьшаются с каждым шагом, но никогда не могут быть отрицательными, остаток рN должен в конечном итоге равняться нулю, после чего алгоритм останавливается.[13] Последний ненулевой остаток рN−1 является наибольшим общим делителем а и б. Номер N не может быть бесконечным, потому что есть только конечное число неотрицательных целых чисел между начальным остатком р0 и ноль.

Доказательство действительности

Справедливость алгоритма Евклида может быть доказана двухэтапным аргументом.[14] На первом шаге последний ненулевой остаток рN−1 показано деление обоих а и б. Поскольку это общий делитель, он должен быть меньше или равен наибольшему общему делителю. грамм. На втором шаге показано, что любой общий делитель числа а и б, включая грамм, должен разделить рN−1; следовательно, грамм должно быть меньше или равно рN−1. Эти два вывода несовместимы, если рN−1 = грамм.

Чтобы продемонстрировать, что рN−1 разделяет оба а и б (первый шаг), рN−1 делит своего предшественника рN−2

рN−2 = qN рN−1

так как последний остаток рN равно нулю. рN−1 также делит своего следующего предшественника рN−3

рN−3 = qN−1 рN−2 + рN−1

потому что он делит оба члена в правой части уравнения. Повторяя тот же аргумент, рN−1 делит все предыдущие остатки, включая а и б. Ни один из предыдущих остатков рN−2, рN−3и т. д. разделить а и б, поскольку они оставляют остаток. С рN−1 является общим делителем а и б, рN−1 ≤ грамм.

На втором этапе любое натуральное число c что разделяет оба а и б (другими словами, любой общий делитель а и б) делит остатки рk. По определению, а и б можно записать как кратное c : а = MC и б = NC, куда м и п натуральные числа. Следовательно, c делит начальный остаток р0, поскольку р0 = а − q0б = MC − q0NC = (м − q0п)c. Аналогичный аргумент показывает, что c также делит последующие остатки р1, р2и т. д. Следовательно, наибольший общий делитель грамм должен разделить рN−1, откуда следует, что грамм ≤ рN−1. Поскольку первая часть аргумента показала обратное (рN−1 ≤ грамм), следует, что грамм = рN−1. Таким образом, грамм является наибольшим общим делителем всех последующих пар:[15][16]

грамм = gcd (а, б) = gcd (б, р0) = gcd (р0, р1) =… = НОД (рN−2, рN−1) = рN−1.

Пример работы

Анимация, в которой добавляются все более мелкие квадратные плитки, чтобы полностью покрыть прямоугольник.
Анимация алгоритма Евклида на основе вычитания. Исходный прямоугольник имеет размеры а = 1071 и б = 462. Квадраты размером 462 × 462 помещаются в него, оставляя прямоугольник 462 × 147. Этот прямоугольник выложен плиткой из 147 × 147 квадратов, пока не останется прямоугольник 21 × 147, который, в свою очередь, выложен плиткой 21 × 21 квадратом, не оставляя непокрытой области. Наименьший квадрат размером 21 - это НОД 1071 и 462.

Для иллюстрации можно использовать алгоритм Евклида, чтобы найти наибольший общий делитель а = 1071 и б = 462. Для начала, кратные 462 вычитаются из 1071, пока остаток не станет меньше 462. Два таких кратных можно вычесть (q0 = 2), оставляя остаток от 147:

1071 = 2 × 462 + 147.

Затем из 462 вычитаются числа, кратные 147, пока остаток не станет меньше 147. Можно вычесть три кратных (q1 = 3), оставив остаток от 21:

462 = 3 × 147 + 21.

Затем из 147 вычитаются числа, кратные 21, пока остаток не станет меньше 21. Можно вычесть семь кратных (q2 = 7), не оставляя остатка:

147 = 7 × 21 + 0.

Поскольку последний остаток равен нулю, алгоритм заканчивается 21 как наибольший общий делитель 1071 и 462. Это согласуется с НОД (1071, 462), найденным путем разложения на простые множители. над. В табличной форме шаги следующие:

Шаг kУравнениеЧастное и остаток
01071 = q0 462 + р0q0 = 2 и р0 = 147
1462 = q1 147 + р1q1 = 3 и р1 = 21
2147 = q2 21 + р2q2 = 7 и р2 = 0; алгоритм заканчивается

Визуализация

Алгоритм Евклида можно представить себе в терминах мозаичной аналогии, приведенной выше для наибольшего общего делителя.[17] Предположим, что мы хотим покрыть а-к-б прямоугольник с квадратными плитками ровно, где а является большим из двух чисел. Сначала мы пытаемся выложить прямоугольник, используя б-к-б квадратная плитка; однако это оставляет р0-к-б остаточный прямоугольник без элементов, где р0 < б. Затем мы пытаемся замостить остаточный прямоугольник с помощью р0-к-р0 квадратная плитка. Остается второй остаточный прямоугольник р1-к-р0, который мы пытаемся выложить плиткой, используя р1-к-р1 квадратная плитка и т. д. Последовательность завершается, когда нет остаточного прямоугольника, то есть когда квадратные плитки точно покрывают предыдущий остаточный прямоугольник. Длина сторон самой маленькой квадратной плитки - это НОД размеров исходного прямоугольника. Например, самая маленькая квадратная плитка на соседнем рисунке имеет размер 21 на 21 (показано красным), а 21 - это НОД 1071 и 462, размеры исходного прямоугольника (показаны зеленым).

Евклидово деление

На каждом шагу k, алгоритм Евклида вычисляет частное qk и остальное рk из двух номеров рk−1 и рk−2

рk−2 = qk рk−1 + рk

где рk неотрицательно и строго меньше, чем абсолютная величина из рk−1. Теорема, лежащая в основе определения Евклидово деление гарантирует, что такое частное и остаток всегда существуют и уникальны.[18]

В исходной версии алгоритма Евклида частное и остаток находятся путем повторного вычитания; то есть, рk−1 вычитается из рk−2 повторно до остатка рk меньше чем рk−1. После того рk и рk−1 обмениваются, и процесс повторяется. Евклидово деление сокращает все шаги между двумя обменами до одного шага, что, таким образом, более эффективно. Более того, частные не нужны, поэтому можно заменить евклидово деление на операция по модулю, что дает только остаток. Таким образом, итерация алгоритма Евклида становится просто

рk = рk−2 мод рk−1.

Реализации

Реализации алгоритма могут быть выражены в псевдокод. Например, версия на основе разделения может быть запрограммированный в качестве[19]

функция gcd (a, b) пока b ≠ 0 t: = b b: = a мод б а: = т возвращаться а

В начале kй итерации переменная б держит последний остаток рk−1, а переменная а держит своего предшественника, рk−2. Шаг б := а мод б эквивалентно приведенной выше формуле рекурсии рkрk−2 мод рk−1. В временная переменная т имеет ценность рk−1 а следующий остаток рk рассчитывается. В конце итерации цикла переменная б держит остаток рk, а переменная а держит своего предшественника, рk−1.

В версии на основе вычитания, которая была исходной версией Евклида, вычисление остатка (б: = а мод б) заменяется повторным вычитанием.[20] В отличие от версии на основе деления, которая работает с произвольными целыми числами в качестве ввода, версия на основе вычитания предполагает, что ввод состоит из положительных целых чисел и останавливается, когда а = б:

функция gcd (a, b) пока а ≠ б если а> б а: = а - б еще            б: = б - а возвращаться а

Переменные а и б поочередно удерживая предыдущие остатки рk−1 и рk−2. Предположить, что а больше чем б в начале итерации; тогда а равно рk−2, поскольку рk−2 > рk−1. Во время итерации цикла а уменьшается кратно предыдущему остатку б до того как а меньше чем б. потом а следующий остаток рk. потом б уменьшается кратно а пока он снова не станет меньше, чем а, давая следующий остаток рk+1, и так далее.

Рекурсивная версия[21] основан на равенстве НОД последовательных остатков и условия остановки НОД (рN−1, 0) = рN−1.

функция gcd (a, b) если б = 0 возвращаться а еще        возвращаться gcd (b, a мод б)

Например, НОД (1071, 462) вычисляется из эквивалентного НОД (462, 1071 mod 462) = НОД (462, 147). Последний НОД вычисляется из НОД (147, 462 mod 147) = НОД (147, 21), который, в свою очередь, вычисляется из НОД (21, 147 mod 21) = НОД (21, 0) = 21.

Метод наименьших абсолютных остатков

В другой версии алгоритма Евклида частное на каждом шаге увеличивается на единицу, если результирующий отрицательный остаток меньше по величине, чем типичный положительный остаток.[22][23] Ранее уравнение

рk−2 = qk рk−1 + рk

предположил, что |рk−1| > рk > 0. Однако альтернативный отрицательный остаток еk можно вычислить:

рk−2 = (qk + 1) рk−1 + еk

если рk−1 > 0 или же

рk−2 = (qk − 1) рk−1 + еk

если рk−1 < 0.

Если рk заменяется на еk. когда |еk| < |рk|, то получается такой вариант алгоритма Евклида, что

|рk| ≤ |рk−1| / 2

на каждом шагу.

Леопольд Кронекер показал, что эта версия требует наименьшего количества шагов по сравнению с любой версией алгоритма Евклида.[22][23] В более общем плане было доказано, что для каждого входного числа а и б, количество шагов минимально тогда и только тогда, когда qk выбирается для того, чтобы куда это Золотое сечение.[24]

Историческое развитие

«Изображение Евклида в виде бородатого мужчины, держащего разделители на табличке».
Вероятно, алгоритм Евклида был изобретен раньше Евклид, изображенный здесь, держащий компас на картине около 1474 г.

Алгоритм Евклида - один из самых старых широко используемых алгоритмов.[25] Он появляется в Евклида Элементы (ок. 300 г. до н.э.), особенно в Книге 7 (Предложения 1–2) и Книге 10 (Предложения 2–3). В Книге 7 алгоритм сформулирован для целых чисел, тогда как в Книге 10 он сформулирован для длин отрезков прямой. (В современном использовании можно сказать, что он был сформулирован для действительные числа. Но длины, площади и объемы, представленные в современном обиходе действительными числами, не измеряются в одних и тех же единицах, и нет естественных единиц длины, площади или объема; понятие действительных чисел в то время было неизвестно.) Последний алгоритм является геометрическим. НОД двух длин а и б соответствует наибольшей длине грамм это меры а и б равномерно; другими словами, длина а и б оба целые числа кратные длины грамм.

Вероятно, алгоритм не был обнаружен Евклид, который обобщил результаты более ранних математиков в своей Элементы.[26][27] Математик и историк Б. Л. ван дер Варден предполагает, что Книга VII происходит из учебника по теория чисел написано математиками в школе Пифагор.[28] Алгоритм, вероятно, был известен Евдокс Книдский (около 375 г. до н.э.).[25][29] Алгоритм может даже предшествовать Евдоксу,[30][31] судя по использованию технического термина ἀνθυφαίρεσις (ангиферез, взаимное вычитание) в работах Евклида и Аристотеля.[32]

Спустя столетия алгоритм Евклида был независимо открыт как в Индии, так и в Китае.[33] в первую очередь решить Диофантовы уравнения возникшие в астрономии и создании точных календарей. В конце V века индийский математик и астроном Арьябхата описал алгоритм как «измельчитель»,[34] возможно, из-за его эффективности при решении диофантовых уравнений.[35] Хотя частный случай Китайская теорема об остатках уже было описано в китайской книге Сунзи Суаньцзин,[36] общее решение было опубликовано Цинь Цзюшао в его книге 1247 г. Шушу Цзючжан (數 書 九章 Математический трактат в девяти разделах ).[37] Впервые был описан алгоритм Евклида. численно и популяризован в Европе во втором издании Баше Problèmes plaisants et délectables (Приятные и приятные проблемы, 1624).[34] В Европе он также использовался для решения диофантовых уравнений и при разработке непрерывные дроби. В расширенный алгоритм Евклида был опубликован английским математиком Николас Сондерсон,[38] кто приписал это Роджер Котс как метод эффективного вычисления непрерывных дробей.[39]

В 19 веке алгоритм Евклида привел к развитию новых систем счисления, таких как Гауссовские целые числа и Целые числа Эйзенштейна. В 1815 г. Карл Гаусс использовали алгоритм Евклида, чтобы продемонстрировать уникальную факторизацию Гауссовские целые числа, хотя его работа была впервые опубликована в 1832 году.[40] Гаусс упомянул алгоритм в своем Disquisitiones Arithmeticae (опубликовано в 1801 г.), но только как метод для непрерывные дроби.[33] Питер Густав Лежен Дирихле кажется, был первым, кто описал алгоритм Евклида как основу большей части теории чисел.[41] Лежен Дирихле отметил, что многие результаты теории чисел, такие как уникальная факторизация, будут верны для любой другой системы чисел, к которой можно применить алгоритм Евклида.[42] Лекции Лежена Дирихле по теории чисел редактировал и дополнял Ричард Дедекинд, который использовал алгоритм Евклида для изучения алгебраические целые числа, новый общий тип номера. Например, Дедекинд первым доказал Теорема Ферма о двух квадратах используя уникальную факторизацию гауссовских целых чисел.[43] Дедекинд также определил понятие Евклидова область, система счисления, в которой может быть определена обобщенная версия алгоритма Евклида (как описано ниже ). В последние десятилетия XIX века алгоритм Евклида постепенно уступил место более общей теории Дедекинда. идеалы.[44]

«[Алгоритм Евклида] - дедушка всех алгоритмов, потому что это самый старый нетривиальный алгоритм, сохранившийся до наших дней».

Дональд Кнут, Искусство программирования, Vol. 2: получисловые алгоритмы, 2-е издание (1981), стр. 318.

Другие приложения алгоритма Евклида были разработаны в 19 веке. В 1829 г. Чарльз Штурм показал, что алгоритм был полезен в Штурмовая цепь метод подсчета действительных корней многочленов в любом заданном интервале.[45]

Алгоритм Евклида был первым алгоритм целочисленного отношения, который представляет собой метод нахождения целочисленных отношений между соизмеримыми действительными числами. Несколько романов алгоритмы целочисленных отношений были разработаны, например, алгоритм Геламан Фергюсон и Р.В. Форкэйд (1979)[46] и LLL алгоритм.[47][48]

В 1969 году Коул и Дэви разработали игру для двух игроков, основанную на алгоритме Евклида, под названием Игра Евклида,[49] который имеет оптимальную стратегию.[50] Игроки начинают с двумя стопками а и б камни. Игроки по очереди снимают м кратно меньшей стопке большей. Таким образом, если две стопки состоят из Икс и у камни, где Икс больше чем у, следующий игрок может уменьшить большую стопку из Икс камни в Иксмой камни, если последнее является целым неотрицательным числом. Побеждает тот игрок, который первым уменьшит одну стопку камней до нуля.[51][52]

Математические приложения

Личность Безу

Личность Безу утверждает, что наибольший общий делитель грамм двух целых чисел а и б можно представить как линейную сумму двух исходных чисел а и б.[53] Другими словами, всегда можно найти целые числа s и т такой, что грамм = са + tb.[54][55]

Целые числа s и т можно рассчитать из частных q0, q1и т.д., изменив порядок уравнений в алгоритме Евклида.[56] Начиная с предпоследнего уравнения, грамм можно выразить через частное qN−1 и два предыдущих остатка, рN−2 и рN−3:

грамм = рN−1 = рN−3qN−1 рN−2 .

Эти два остатка могут быть аналогичным образом выражены через их частные и предшествующие остатки,

рN−2 = рN−4qN−2 рN−3 и
рN−3 = рN−5qN−3 рN−4 .

Подставляя эти формулы для рN−2 и рN−3 в первое уравнение дает грамм как линейную сумму остатков рN−4 и рN−5. Процесс замены остатков формулами с участием их предшественников может быть продолжен до тех пор, пока исходные числа а и б достигаются:

р2 = р0q2 р1
р1 = бq1 р0
р0 = аq0 б.

После всего остального р0, р1и т. д., окончательное уравнение выражает грамм как линейную сумму а и б: грамм = са + tb. Личность Безу, и, следовательно, предыдущий алгоритм, оба могут быть обобщены в контексте Евклидовы области.

Основные идеалы и связанные с ними проблемы

Тождество Безу дает еще одно определение наибольшего общего делителя грамм двух чисел а и б.[10] Рассмотрим набор всех чисел ua + vb, куда ты и v - любые два целых числа. С а и б оба делятся на грамм, каждое число в наборе делится на грамм. Другими словами, каждое число в наборе является целым числом, кратным грамм. Это верно для любого общего делителя а и б. Однако, в отличие от других общих делителей, наибольший общий делитель является членом множества; личности Безу, выбрав ты = s и v = т дает грамм. Меньший общий делитель не может быть членом множества, так как каждый член множества должен делиться на грамм. И наоборот, любое кратное м из грамм можно получить, выбрав ты = РС и v = мт, куда s и т являются целыми числами личности Безу. Это можно увидеть, умножив личность Безу на м,

мг = мса + mtb.

Следовательно, набор всех чисел ua + vb эквивалентен множеству кратных м из грамм. Другими словами, множество всех возможных сумм целых кратных двух чисел (а и б) эквивалентен множеству кратных gcd (а, б). Говорят, что НОД является генератором идеальный из а и б. Это определение НОД привело к современному абстрактная алгебраическая концепции главный идеал (идеал, порожденный одним элементом) и главная идеальная областьдомен в котором каждый идеал является главным идеалом).

С помощью этого результата можно решить некоторые проблемы.[57] Например, рассмотрим две мерные чашки объема. а и б. Добавляя / вычитая ты кратные первой чашки и v кратные второй чашки, любой объем ua + vb можно измерить. Все эти объемы кратны грамм = gcd (аб).

Расширенный алгоритм Евклида

Целые числа s и т тождества Безу можно эффективно вычислить с помощью расширенный алгоритм Евклида. Это расширение добавляет к алгоритму Евклида два рекурсивных уравнения[58]

sk = sk−2qksk−1
тk = тk−2qkтk−1

с начальными значениями

s−2 = 1, т−2 = 0
s−1 = 0, т−1 = 1.

Используя эту рекурсию, целые числа Безу s и т даны s = sN и т = тN, куда N + 1 шаг, на котором алгоритм завершается с рN + 1 = 0.

Справедливость этого подхода можно показать по индукции. Предположим, что формула рекурсии верна до шага k - 1 алгоритм; другими словами, предположим, что

рj = sj а + тj б

для всех j меньше, чем k. В k-й шаг алгоритма дает уравнение

рk = рk−2qkрk−1.

Поскольку формула рекурсии считается правильной для рk−2 и рk−1, они могут быть выражены через соответствующие s и т переменные

рk = (sk−2 а + тk−2 б) − qk(sk−1 а + тk−1 б).

Преобразование этого уравнения приводит к формуле рекурсии для шага k, как требуется

рk = sk а + тk б = (sk−2qksk−1) а + (тk−2qkтk−1) б.

Матричный метод

Целые числа s и т также можно найти с помощью эквивалента матрица метод.[59] Последовательность уравнений алгоритма Евклида

может быть записано как произведение матриц частных 2 на 2, умноженных на двумерный вектор остатка

Позволять M представляют собой произведение всех матриц частных

Это упрощает алгоритм Евклида до вида

Выражать грамм как линейная сумма а и б, обе части этого уравнения можно умножить на обратный матрицы M.[59][60] В детерминант из M равно (−1)N+1, так как он равен произведению определителей факторных матриц, каждая из которых отрицательна. Поскольку определитель M никогда не равен нулю, вектор конечных остатков может быть решен с помощью обратного к M

Поскольку верхнее уравнение дает

грамм = (−1)N+1 ( м22 ам12 б),

два целых числа личности Безу равны s = (−1)N+1м22 и т = (−1)Nм12. Матричный метод столь же эффективен, как и эквивалентная рекурсия, с двумя умножениями и двумя сложениями на шаг алгоритма Евклида.

Лемма Евклида и единственная факторизация

Личность Безу важна для многих приложений алгоритма Евклида, таких как демонстрация уникальная факторизация чисел в простые множители.[61] Чтобы проиллюстрировать это, предположим, что число L можно записать как произведение двух факторов ты и v, то есть, L = УФ. Если другой номер ш также разделяет L но совпадает с ты, тогда ш должен разделить v, по следующему аргументу: если наибольший общий делитель ты и ш равно 1, то целые числа s и т можно найти так, что

1 = вс + tw .

по личности Безу. Умножая обе стороны на v дает отношение

v = внедорожник + twv = sL + twv .

С ш делит оба члена в правой части, он также должен делить левую часть, v. Этот результат известен как Лемма евклида.[62] В частности, если простое число делит L, то он должен делить хотя бы один множитель L. И наоборот, если число ш взаимно проста с каждым из ряда чисел а1, а2, ..., ап, тогда ш также взаимно прост с их продуктом, а1 × а2 × ... × ап.[62]

Леммы Евклида достаточно, чтобы доказать, что каждое число имеет уникальное разложение на простые числа.[63] Чтобы убедиться в этом, предположим противное, что существуют две независимые факторизации L в м и п простые множители соответственно

L = п1п2пм = q1q2qп .

Поскольку каждое простое число п разделяет L по предположению, он также должен делить один из q факторы; поскольку каждый q тоже простое, это должно быть так п = q. Итеративное деление на п факторов показывает, что каждый п имеет равный аналог q; две простые факторизации идентичны, за исключением их порядка. Уникальное разложение чисел на простые числа имеет множество применений в математических доказательствах, как показано ниже.

Линейные диофантовы уравнения

Участок линейного Диофантово уравнение, 9Икс + 12у = 483. Решения показаны синими кружками.

Диофантовы уравнения - уравнения, решения в которых ограничены целыми числами; они названы в честь александрийского математика 3-го века Диофант.[64] Типичный линейный Диофантово уравнение ищет целые числа Икс и у такой, что[65]

топор + к = c

куда а, б и c даны целые числа. Это можно записать в виде уравнения для Икс в модульная арифметика:

топорc мод б.

Позволять грамм быть наибольшим общим делителем а и б. Оба термина в топор + к делятся на грамм; следовательно, c также должно делиться на грамм, либо уравнение не имеет решений. Разделив обе стороны на c/грамм, уравнение сводится к тождеству Безу

са + tb = грамм

куда s и т можно найти по расширенный алгоритм Евклида.[66] Это дает одно решение диофантова уравнения, Икс1 = s (c/грамм) и у1 = т (c/грамм).

В общем случае линейное диофантово уравнение не имеет решений или имеет бесконечное число решений.[67] Чтобы найти последнее, рассмотрим два решения: (Икс1у1) и (Икс2у2), куда

топор1 + к1 = c = топор2 + к2

или эквивалентно

а(Икс1Икс2) = б(у2у1).

Поэтому наименьшая разница между двумя Икс решения б/грамм, тогда как наименьшая разница между двумя у решения а/грамм. Таким образом, решения могут быть выражены как

Икс = Икс1бу/грамм
у = у1 + au/грамм.

Позволяя ты чтобы варьироваться по всем возможным целым числам, бесконечное семейство решений может быть сгенерировано из одного решения (Икс1у1). Если решения должны быть положительный целые числа (Икс > 0, у > 0), возможно лишь конечное число решений. Это ограничение на приемлемые решения позволяет некоторым системам диофантовых уравнений с большим количеством неизвестных, чем у уравнений, иметь конечное число решений;[68] это невозможно для система линейных уравнений когда решения могут быть любыми настоящий номер (видеть Недоопределенная система ).

Мультипликативные инверсии и алгоритм RSA

А конечное поле представляет собой набор чисел с четырьмя обобщенными операциями. Эти операции называются сложением, вычитанием, умножением и делением и имеют свои обычные свойства, такие как коммутативность, ассоциативность и распределенность. Примером конечного поля является набор из 13 чисел {0, 1, 2, ..., 12} с использованием модульная арифметика. В этом поле сокращаются результаты любой математической операции (сложение, вычитание, умножение или деление). по модулю 13; то есть числа, кратные 13, добавляются или вычитаются, пока результат не будет находиться в диапазоне 0–12. Например, результат 5 × 7 = 35 mod 13 = 9. Такие конечные поля могут быть определены для любого простого числа. п; используя более сложные определения, они также могут быть определены для любой мощности м премьер п м. Конечные поля часто называют Галуа поля, и сокращенно GF (п) или GF (п м).

В таком поле с м числа, каждый ненулевой элемент а имеет уникальный модульный мультипликативный обратный, а−1 такой, что аа−1 = а−1а ≡ 1 модм. Это обратное можно найти, решив уравнение сравнения топор ≡ 1 модм,[69] или эквивалентное линейное диофантово уравнение[70]

топор + мой = 1.

Это уравнение можно решить с помощью алгоритма Евклида, как описано над. Нахождение мультипликативных инверсий - важный шаг в Алгоритм RSA, который широко используется в электронная коммерция; в частности, уравнение определяет целое число, используемое для дешифрования сообщения.[71] Хотя алгоритм RSA использует кольца вместо полей, алгоритм Евклида все еще может использоваться для нахождения мультипликативного обратного, если он существует. У алгоритма Евклида есть и другие приложения в коды с исправлением ошибок; например, его можно использовать как альтернативу Алгоритм Берлекампа-Месси для расшифровки BCH и Коды Рида – Соломона, основанные на полях Галуа.[72]

Китайская теорема об остатках

Алгоритм Евклида также можно использовать для решения нескольких линейных диофантовых уравнений.[73] Такие уравнения возникают в Китайская теорема об остатках, который описывает новый метод представления целого числа Икс. Вместо представления целого числа цифрами оно может быть представлено остатками Икся по модулю набора N взаимно простые числа мя:[74]

Цель - определить Икс из его N остатки Икся. Решение состоит в том, чтобы объединить несколько уравнений в одно линейное диофантово уравнение с гораздо большим модулем M это продукт всех индивидуальных модулей мя, и определим Mя в качестве

Таким образом, каждый Mя является произведением всех модулей Кроме мя. Решение зависит от поиска N новые номера чася такой, что

С этими числами чася, любое целое число Икс может быть восстановлен по его остаткам Икся по уравнению

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

Стерн – Броко

Алгоритм Евклида можно использовать для упорядочивания множества всех положительных рациональное число в бесконечность двоичное дерево поиска, называется Стерн – Броко Число 1 (выраженное дробью 1/1) помещается в корень дерева, а расположение любого другого числа а/б можно найти, вычислив gcd (а,б) с использованием исходной формы алгоритма Евклида, в котором каждый шаг заменяет большее из двух заданных чисел его разницей на меньшее число (не его остаток), останавливаясь при достижении двух равных чисел. Шаг алгоритма Евклида, который заменяет первое из двух чисел, соответствует шагу в дереве от узла до его правого дочернего элемента, а шаг, который заменяет второе из двух чисел, соответствует шагу в дереве от узла. слева от него. Построенная таким образом последовательность шагов не зависит от того, а/б дается в наименьших терминах и образует путь от корня до узла, содержащего число а/б.[75] Этот факт можно использовать, чтобы доказать, что каждое положительное рациональное число встречается в этом дереве ровно один раз.

Например, 3/4 можно найти, начав с корня, перейдя один раз влево, а затем дважды вправо:

Дерево Штерна – Броко и последовательности Штерна – Броко порядка я за я = 1, 2, 3, 4

Алгоритм Евклида имеет почти такое же отношение к другому двоичному дереву рациональных чисел, называемому Дерево Калкина – Уилфа. Разница в том, что путь является обратным: вместо создания пути от корня дерева к цели, он создает путь от цели к корню.

Непрерывные дроби

Алгоритм Евклида тесно связан с непрерывные дроби.[76] Последовательность уравнений можно записать в виде

Последний член в правой части всегда равен обратной левой части следующего уравнения. Таким образом, первые два уравнения могут быть объединены в

Третье уравнение можно использовать для замены члена знаменателя р1/р0, уступая

Окончательное соотношение остатков рk/рk−1 всегда можно заменить, используя следующее уравнение в серии, вплоть до последнего уравнения. Результат - непрерывная дробь

В отработанном примере над, был вычислен НОД (1071, 462), а частные qk были 2, 3 и 7 соответственно. Следовательно, дробь 1071/462 может быть записана

что подтверждается расчетом.

Алгоритмы факторизации

Вычисление наибольшего общего делителя - важный шаг в нескольких целочисленная факторизация алгоритмы,[77] Такие как Алгоритм ро Полларда,[78] Алгоритм Шора,[79] Метод факторизации Диксона[80] и Факторизация эллиптической кривой Ленстры.[81] Для эффективного нахождения этого НОД можно использовать алгоритм Евклида. Факторизация непрерывной дроби использует непрерывные дроби, которые определяются с помощью алгоритма Евклида.[82]

Алгоритмическая эффективность

«Набор цветных линий, расходящихся наружу от начала системы координат x-y. Каждая линия соответствует набору пар чисел, требующих одинакового количества шагов в алгоритме Евклида».
Количество шагов в алгоритме Евклида для gcd (Икс,у). Светлые (красные и желтые) точки указывают на относительно небольшое количество шагов, тогда как более темные (фиолетовые и синие) точки указывают на большее количество шагов. Самая большая темная область следует за линией у = Φx, куда Φ это Золотое сечение.

Вычислительная эффективность алгоритма Евклида тщательно изучена.[83] Эту эффективность можно описать числом шагов деления, которое требует алгоритм, умноженным на вычислительные затраты на каждый шаг. Первый известный анализ алгоритма Евклида принадлежит А.А.Л. Рейно в 1811 г.[84] кто показал, что количество шагов деления на входе (ты, v) ограничен v; позже он улучшил это до v/ 2 + 2. Позже, в 1841 г., П. Дж. Э. Финк показал[85] что количество шагов деления не превышает 2 log2 v + 1, и, следовательно, алгоритм Евклида работает во времени, полиномиальном от размера входных данных.[86] Эмиль Леже в 1837 г. изучал худший случай, когда входы последовательные Числа Фибоначчи.[86] Анализ Финка был уточнен Габриэль Ламе в 1844 г.,[87] кто показал, что количество шагов, необходимых для выполнения, никогда не превышает пятикратное количество час десятичных цифр меньшего числаб.[88][89]

в модель единой стоимости (подходит для анализа сложности вычисления НОД для чисел, которые укладываются в одно машинное слово), каждый шаг алгоритма занимает постоянное время, и анализ Ламе подразумевает, что общее время работы также О(час). Однако в модели вычислений, подходящей для вычислений с большими числами, вычислительные затраты на вычисление одного остатка в алгоритме могут достигать О(час2).[90] В этом случае общее время для всех шагов алгоритма можно проанализировать с помощью телескопическая серия, показывая, что это также О(час2). Современные алгоритмические техники, основанные на Алгоритм Шёнхаге – Штрассена для быстрого целочисленного умножения может использоваться, чтобы ускорить это, что приводит к квазилинейные алгоритмы для НОД.[91][92]

Кол-во ступеней

Количество шагов для вычисления НОД двух натуральных чисел, а и б, может быть обозначено Т(аб).[93] Если грамм это НОД а и б, тогда а = мг и б = нг для двух взаимно простых чисел м и п. потом

Т(а, б) = Т(м, п)

как можно увидеть, разделив все шаги в алгоритме Евклида на грамм.[94] По тому же аргументу количество шагов остается прежним, если а и б умножаются на общий коэффициент ш: Т(а, б) = Т(ва, wb). Следовательно, количество ступеней Т может сильно различаться между соседними парами чисел, например T (а, б) и т(аб + 1), в зависимости от размера двух НОД.

Рекурсивный характер алгоритма Евклида дает еще одно уравнение

Т(а, б) = 1 + Т(б, р0) = 2 + Т(р0, р1) = … = N + Т(рN−2, рN−1) = N + 1

куда Т(Икс, 0) = 0 по предположению.[93]

Худший случай

Если алгоритм Евклида требует N шаги для пары натуральных чисел а > б > 0 наименьшие значения а и б для которых это верно, являются Числа Фибоначчи FN+2 и FN+1, соответственно.[95] Точнее, если алгоритм Евклида требует N шаги для пары а > б, то есть а ≥ FN+2 и б ≥ FN+1. Это можно показать индукция.[96] Если N = 1, б разделяет а без остатка; наименьшие натуральные числа, для которых это верно, б = 1 и а = 2, которые F2 и F3, соответственно. Теперь предположим, что результат верен для всех значений N вплоть до M - 1. Первый шаг M-шаговый алгоритм а = q0б + р0, а алгоритм Евклида требует M - 1 ступенька для пары б > р0. По предположению индукции имеем б ≥ FM+1 и р0 ≥ FM. Следовательно, а = q0б + р0 ≥ б + р0 ≥ FM+1 + FM = FM+2, которое является искомым неравенством. Это доказательство, опубликованное Габриэль Ламе в 1844 г., представляет собой начало теория сложности вычислений,[97] а также первое практическое применение чисел Фибоначчи.[95]

Этого результата достаточно, чтобы показать, что количество шагов в алгоритме Евклида никогда не может превышать количество его цифр более чем в пять раз (основание 10).[98] Если алгоритм требует N шаги, то б Больше или равно FN+1 что, в свою очередь, больше или равно φN−1, куда φ это Золотое сечение. С б ≥ φN−1, тогда N - 1 ≤ журналφб. Поскольку журнал10φ > 1/5, (N - 1) / 5 <журнал10φ бревноφб = журнал10б. Таким образом, N ≤ 5 журнал10б. Таким образом, алгоритм Евклида всегда требует меньше, чем О(час) подразделения, где час это количество цифр в меньшем числе б.

Средний

Среднее количество шагов, выполняемых алгоритмом Евклида, было определено тремя различными способами. Первое определение - это среднее время Т(а), необходимого для расчета НОД заданного числа а и меньшее натуральное число б выбираются с равной вероятностью из целых чисел от 0 до а − 1[93]

Однако, поскольку Т(аб) сильно колеблется в зависимости от НОД двух чисел, усредненная функция Т(а) также "шумно".[99]

Чтобы уменьшить этот шум, второй средний τ(а) берется по всем числам, взаимно простым с а

Есть φ(а) взаимно простые целые числа меньше а, куда φ является Функция Эйлера. Это среднее значение тау плавно растет с а[100][101]

с остаточной ошибкой порядка а−(1/6) + ε, куда ε является бесконечно малый. Постоянная C (Константа Портера[102]) в этой формуле равно

куда γ это Константа Эйлера – Маскерони а ζ '- производная из Дзета-функция Римана.[103][104] Старший коэффициент (12 / π2) ln 2 определяли двумя независимыми методами.[105][106]

Поскольку первое среднее значение может быть вычислено из среднего тау путем суммирования по делителям d иза[107]

его можно аппроксимировать формулой[108]

где Λ (d) это Функция Мангольдта.[109]

Третье среднее Y(п) определяется как среднее количество шагов, необходимых, когда оба а и б выбираются случайным образом (с равномерным распределением) от 1 до п[108]

Подставляя приближенную формулу для Т(а) в это уравнение дает оценку для Y(п)[110]

Вычислительные затраты на шаг

На каждом шагу k алгоритма Евклида, фактор qk и остальное рk вычисляются для данной пары целых чисел рk−2 и рk−1

рk−2 = qk рk−1 + рk.

Вычислительные затраты на шаг связаны в основном с поиском qk, так как остаток рk можно быстро рассчитать из рk−2, рk−1, и qk

рk = рk−2qk рk−1.

Вычислительные затраты на деление час-битовые числа масштабируются как О(час(+1)), где - длина частного.[90]

Для сравнения: оригинальный алгоритм Евклида, основанный на вычитании, может быть намного медленнее. Одно целочисленное деление эквивалентно частному q количество вычитаний. Если соотношение а и б очень велико, частное велико, и потребуется много вычитаний. С другой стороны, было показано, что частные с большой вероятностью будут небольшими целыми числами. Вероятность данного частного q примерно ln |ты/(ты - 1) | куда ты = (q + 1)2.[111] Для иллюстрации вероятность частного 1, 2, 3 или 4 составляет примерно 41,5%, 17,0%, 9,3% и 5,9% соответственно. Так как операция вычитания быстрее деления, особенно для больших чисел,[112] алгоритм Евклида, основанный на вычитании, конкурирует с версией, основанной на делении.[113] Это эксплуатируется в двоичная версия алгоритма Евклида.[114]

Комбинирование расчетного количества шагов с расчетными вычислительными затратами на шаг показывает, что алгоритм Евклида растет квадратично (час2) со средним количеством цифр час в первых двух числах а и б. Позволять час0, час1, ..., часN−1 представляют количество цифр в последовательных остатках р0р1, ..., рN−1. Поскольку количество ступеней N растет линейно с час, время работы ограничено

Альтернативные методы

Алгоритм Евклида широко используется на практике, особенно для малых чисел, из-за своей простоты.[115] Для сравнения можно определить эффективность альтернатив алгоритму Евклида.

Один неэффективный подход к нахождению НОД двух натуральных чисел а и б вычислить все их общие делители; НОД тогда является наибольшим общим делителем. Общие делители можно найти, разделив оба числа на последовательные целые числа от 2 до меньшего числа. б. Количество шагов этого подхода линейно растет с увеличением б, или экспоненциально по количеству цифр. Другой неэффективный подход - найти простые множители одного или обоих чисел. Как указано над, НОД равняется произведению простых множителей двух чисел а и б.[6] Настоящие методы для простые множители также неэффективны; многие современные системы криптографии даже полагаются на эту неэффективность.[9]

В двоичный алгоритм GCD - эффективная альтернатива, которая заменяет деление более быстрыми операциями за счет использования двоичный представление, используемое компьютерами.[116][117] Однако эта альтернатива также масштабируется как О(час²). Как правило, он быстрее, чем алгоритм Евклида на реальных компьютерах, хотя масштабируется таким же образом.[91] Дополнительную эффективность можно получить, изучив только первые цифры двух чисел. а и б.[118][119] Бинарный алгоритм может быть расширен на другие базы (k-арные алгоритмы),[120] с пятикратным увеличением скорости.[121] Алгоритм Лемера GCD использует тот же общий принцип, что и двоичный алгоритм, для ускорения вычислений GCD с произвольной базой.

Рекурсивный подход для очень больших целых чисел (более 25000 цифр) приводит к квазилинейный целочисленные алгоритмы НОД,[122] такие как у Шёнхаге,[123][124] и Stehlé и Zimmermann.[125] Эти алгоритмы используют матричную форму 2 × 2 алгоритма Евклида, заданного над. Эти квазилинейные методы обычно масштабируются как О(час (бревно час)2 (журнал журнал час)).[91][92]

Обобщения

Хотя алгоритм Евклида используется для нахождения наибольшего общего делителя двух натуральных чисел (положительных целых чисел), он может быть обобщен на действительные числа и другие математические объекты, такие как многочлены,[126] квадратичные целые числа[127] и Кватернионы Гурвица.[128] В последних случаях алгоритм Евклида используется для демонстрации ключевого свойства уникальной факторизации, то есть того, что такие числа могут быть однозначно разложены на множители. неприводимые элементы, аналоги простых чисел. Уникальная факторизация необходима для многих доказательств теории чисел.

Рациональные и действительные числа

Алгоритм Евклида можно применить к действительные числа, как описано Евклидом в книге 10 его Элементы. Цель алгоритма - определить реальное число грамм такие, что два заданных действительных числа, а и б, являются целыми кратными ему: а = мг и б = нг, куда м и п находятся целые числа.[26] Это отождествление эквивалентно нахождению целочисленное отношение среди реальных чисел а и б; то есть определяет целые числа s и т такой, что са + tb = 0. Евклид использует этот алгоритм для решения вопроса о несоизмеримые длины.[129][130]

Алгоритм Евклида с действительными числами отличается от своего целочисленного аналога в двух отношениях. Во-первых, остатки рk являются действительными числами, хотя частные qk как и раньше, являются целыми числами. Во-вторых, не гарантируется, что алгоритм закончит конечное число N шагов. Если это так, дробь а/б - рациональное число, то есть отношение двух целых чисел

и может быть записана в виде конечной цепной дроби [q0; q1, q2, ..., qN]. Если алгоритм не останавливается, дробь а/б является иррациональный номер и описывается бесконечной цепной дробью [q0; q1, q2, …].[131] Примеры бесконечных цепных дробей: Золотое сечение φ = [1; 1, 1, ...] и квадратный корень из двух, 2 = [1; 2, 2, ...].[132] Алгоритм вряд ли остановится, так как почти все соотношения а/б двух действительных чисел иррациональны.[133]

Бесконечная цепная дробь может быть усечена на шаге k [q0; q1, q2, ..., qk] чтобы приблизиться к а/б это улучшается как k увеличена. Приближение описывается формулой сходящиеся мk/пk; числитель и знаменатели взаимно просты и подчиняются отношение повторения

куда м−1 = п−2 = 1 и м−2 = п−1 = 0 - начальные значения рекурсии. Сходящийся мk/пk лучший Рациональное число приближение к а/б со знаменателем пk:[134]

Полиномы

Многочлены от одной переменной Икс можно складывать, умножать и разложить на неприводимые многочлены, которые являются аналогами простых чисел для целых чисел. Многочлен наибольшего общего делителя грамм(Икс) двух многочленов а(Икс) и б(Икс) определяется как произведение их общих неприводимых многочленов, которые можно идентифицировать с помощью алгоритма Евклида.[126] Основная процедура аналогична работе с целыми числами. На каждом шагу k, фактор-полином qk(Икс) и полином остатка рk(Икс) идентифицируются так, чтобы удовлетворять рекурсивному уравнению

куда р−2(Икс) = а(Икс) и р−1(Икс) = б(Икс). Каждый фактор-полином выбирается таким образом, чтобы каждый остаток был либо равен нулю, либо имел степень меньше, чем степень его предшественника: град [рk(Икс)] рk−1(Икс)]. Поскольку степень является неотрицательным целым числом и уменьшается с каждым шагом, алгоритм Евклида завершается за конечное число шагов. Последний ненулевой остаток - это наибольший общий делитель двух исходных многочленов, а(Икс) и б(Икс).[135]

Например, рассмотрим следующие два многочлена четвертой степени, каждый из которых делится на два квадратичных многочлена

Разделение а(Икс) к б(Икс) дает остаток р0(Икс) = Икс3 + (2/3)Икс2 + (5/3)Икс − (2/3). На следующем этапе б(Икс) делится на р0(Икс) дающий остаток р1(Икс) = Икс2 + Икс + 2. Наконец, разделив р0(Икс) к р1(Икс) дает нулевой остаток, указывая, что р1(Икс) является полиномом наибольшего общего делителя а(Икс) и б(Икс), в соответствии с их факторизацией.

Многие из приложений, описанных выше для целых чисел, переносятся на полиномы.[136] Алгоритм Евклида можно использовать для решения линейных диофантовых уравнений и китайских задач остатка для многочленов; также могут быть определены непрерывные дроби многочленов.

У полиномиального алгоритма Евклида есть и другие приложения, например Цепи Штурма, метод подсчета нули полинома что лежат внутри данного реальный интервал.[137] Это, в свою очередь, имеет приложения в нескольких областях, таких как Критерий устойчивости Рауса – Гурвица. в теория управления.[138]

Наконец, коэффициенты многочленов не обязательно должны быть взяты из целых, действительных или даже комплексных чисел. Например, коэффициенты могут быть взяты из общего поля, такого как конечные поля GF (п) описано выше. Соответствующие выводы об алгоритме Евклида и его приложениях справедливы даже для таких многочленов.[126]

Гауссовские целые числа

Распределение гауссовских простых чисел ты + vi в комплексной плоскости, с нормами ты2 + v2 менее 500

Целые гауссовы числа сложные числа формы α = ты + vi, куда ты и v обычные целые числа[заметка 2] и я это квадратный корень из отрицательного.[139] Определяя аналог алгоритма Евклида, можно показать, что гауссовские целые числа однозначно факторизуемы с помощью аргумента над.[40] Эта уникальная факторизация полезна во многих приложениях, например при выводе всех Пифагорейские тройки или доказывая Теорема Ферма о суммах двух квадратов.[139] В целом алгоритм Евклида удобен в таких приложениях, но не является существенным; например, теоремы часто можно доказать другими аргументами.

Алгоритм Евклида, разработанный для двух целых гауссовских чисел α и β почти такая же, как и для обычных целых чисел,[140] но отличается в двух отношениях. Как и раньше, задача на каждом шаге k заключается в определении частного qk и остаток рk такой, что

куда рk−2 = α, куда рk−1 = β, и где каждый остаток строго меньше, чем его предшественник: |рk| < |рk−1|. Первое отличие состоит в том, что частные и остатки сами являются целыми гауссовскими числами и, следовательно, являются сложные числа. Факторы qk обычно находятся путем округления действительной и комплексной частей точного отношения (например, комплексного числа α/β) до ближайших целых чисел.[140] Второе отличие состоит в необходимости определения того, как один комплексный остаток может быть «меньше» другого. Для этого функция нормы ж(ты + vi) = ты2 + v2 определено, которое преобразует каждое целое гауссовское число ты + vi в обычное целое число. После каждого шага k алгоритма Евклида норма остатка ж(рk) меньше нормы предыдущего остатка, ж(рk−1). Поскольку норма является неотрицательным целым числом и уменьшается с каждым шагом, алгоритм Евклида для целых гауссовских чисел завершается за конечное число шагов.[141] Последний ненулевой остаток равен gcd (α, β), гауссовское целое число наибольшей нормы, которое делит оба α и β; он уникален с точностью до умножения на единицу, ±1 или же ±я.[142]

Многие другие приложения алгоритма Евклида переносятся на гауссовские целые числа. Например, его можно использовать для решения линейных диофантовых уравнений и китайских задач остатка для гауссовских целых чисел;[143] также могут быть определены цепные дроби гауссовских целых чисел.[140]

Евклидовы области

Набор элементов на двоих бинарные операции, обозначаемые как сложение и умножение, называется Евклидова область если он образует коммутативное кольцо р и, грубо говоря, если на них можно выполнить обобщенный алгоритм Евклида.[144][145] Две операции такого кольца не обязательно должны быть сложением и умножением в обычной арифметике; скорее, они могут быть более общими, например, операции математическая группа или же моноид. Тем не менее, эти общие операции должны соответствовать многим законам, регулирующим обычную арифметику, например: коммутативность, ассоциативность и распределенность.

Обобщенный алгоритм Евклида требует Евклидова функция, т.е. отображение ж из р в множество неотрицательных целых чисел, таких что для любых двух ненулевых элементов а и б в р, существуют q и р в р такой, что а = qb + р и ж(р) < ж(б).[146] Примерами таких отображений являются абсолютное значение для целых чисел, степень для одномерные многочлены, а норма для целых гауссовских чисел над.[147][148] Основной принцип заключается в том, что каждый шаг алгоритма уменьшает ж неумолимо; следовательно, если ж может быть сокращен только конечное количество раз, алгоритм должен остановиться за конечное количество шагов. Этот принцип основан на хороший порядок свойство неотрицательных целых чисел, которое утверждает, что каждый непустой набор неотрицательных целых чисел имеет наименьший член.[149]

В основная теорема арифметики применяется к любому евклидовому домену: любое число из евклидовой области может быть однозначно разложено на неприводимые элементы. Любая евклидова область - это уникальная область факторизации (UFD), хотя обратное неверно.[149] Евклидовы области и UFD являются подклассами GCD домены, области, в которых всегда существует наибольший общий делитель двух чисел.[150] Другими словами, может существовать наибольший общий делитель (для всех пар элементов в области), хотя его невозможно найти с помощью алгоритма Евклида. Евклидова область всегда главная идеальная область (PID), область целостности в котором каждый идеальный это главный идеал.[151] И снова обратное неверно: не каждый PID является евклидовой областью.

Уникальная факторизация евклидовых областей полезна во многих приложениях. Например, уникальная факторизация гауссовских целых чисел удобна при выводе формул для всех Пифагорейские тройки и в доказательстве Теорема Ферма о суммах двух квадратов.[139] Уникальная факторизация также была ключевым элементом в попытке доказательства Последняя теорема Ферма опубликовано в 1847 году Габриэлем Ламе, тем же математиком, который проанализировал эффективность алгоритма Евклида, основываясь на предположении Джозеф Лиувиль.[152] Подход Ламе потребовал уникальной факторизации чисел вида Икс + ωy, куда Икс и у целые числа, и ω = е2я/п является пкорень -й степени из 1, то есть ωп = 1. Хотя этот подход успешен для некоторых значений п (Такие как п = 3, то Целые числа Эйзенштейна ), в целом такие числа нет фактор однозначно. Эта неудача уникальной факторизации в некоторых циклотомические поля вел Эрнст Куммер к концепции идеальные числа и позже, Ричард Дедекинд к идеалы.[153]

Уникальная факторизация квадратичных целых чисел

Распределение простых чисел Эйзенштейна ты + в комплексной плоскости, с нормами менее 500. Количество ω это кубический корень из 1.

В квадратичное целое число кольца полезны для иллюстрации евклидовых областей. Квадратичные целые числа являются обобщениями гауссовских целых чисел, в которых мнимая единица я заменяется числом ω. Таким образом, они имеют вид ты + , куда ты и v целые числа и ω имеет одну из двух форм, в зависимости от параметра D. Если D не равно четырем плюс один, тогда

Если, однако, D равно кратному четырем плюс одному, тогда

Если функция ж соответствует норма функция, такая как та, которая используется для упорядочивания целых чисел Гаусса над, то домен известен как норм-евклидова. Норм-евклидовы кольца целых квадратичных чисел - это в точности те кольца, в которых D является одним из значений −11, −7, −3, −2, −1, 2, 3, 5, 6, 7, 11, 13, 17, 19, 21, 29, 33, 37, 41, 57, или 73.[154][155] Случаи D = −1 и D = −3 дать Гауссовские целые числа и Целые числа Эйзенштейна, соответственно.

Если ж может быть любой евклидовой функцией, то список возможных значений D для которой область евклидова, пока не известно.[156] Первый пример евклидовой области, которая не была евклидовой по норме (с D = 69) был опубликован в 1994 году.[156] В 1973 году Вайнбергер доказал, что квадратичное целочисленное кольцо с D > 0 евклидово тогда и только тогда, когда оно главная идеальная область при условии, что обобщенная гипотеза Римана держит.[127]

Некоммутативные кольца

Алгоритм Евклида может быть применен к некоторым некоммутативным кольцам, таким как набор Кватернионы Гурвица.[требуется разъяснение ][128] Позволять α и β представляют собой два элемента из такого кольца. У них общий правый делитель δ если α = ξδ и β = ηδ для некоторого выбора ξ и η в ринге. Точно так же у них есть общий левый делитель, если α = и β = для некоторого выбора ξ и η в ринге. Поскольку умножение не коммутативно, существует две версии алгоритма Евклида: одна для правых делителей, другая для левых делителей.[128] Выбор правильных делителей - первый шаг в поиске gcd (α, β) алгоритмом Евклида можно записать

куда ψ0 представляет собой частное и ρ0 остаток.[требуется разъяснение ] Это уравнение показывает, что любой общий правый делитель числа α и β также является общим делителем остатка ρ0. Аналогичное уравнение для левых делителей будет

При любом выборе процесс повторяется, как указано выше, до тех пор, пока не будет определен наибольший общий правый или левый делитель. Как и в евклидовой области, «размер» остатка ρ0 должен быть строго меньше чем β, и должно быть только конечное число возможных размеров для ρ0, так что алгоритм гарантированно завершится.[требуется разъяснение ][157]

Большинство результатов для НОД переносятся на некоммутативные числа.[требуется разъяснение ] Например, Личность Безу заявляет, что право gcd (α, β) можно выразить как линейную комбинацию α и β.[158] Другими словами, есть числа σ и τ такой, что

Аналогичная идентичность для левого НОД почти такая же:

Тождество Безу можно использовать для решения диофантовых уравнений. Например, одно из стандартных доказательств Теорема Лагранжа о четырех квадратах, что каждое положительное целое число может быть представлено в виде суммы четырех квадратов, основано на кватернионных НОД таким образом.[157]

Смотрите также

  • Евклидов ритм, метод использования алгоритма Евклида для генерации музыкальных ритмов.

Примечания

  1. ^ Некоторые широко используемые учебники, такие как И. Н. Герштейн с Темы по алгебре и Серж Ланг с Алгебра, используйте термин «алгоритм Евклида» для обозначения Евклидово деление
  2. ^ Фраза «обычное целое число» обычно используется для отличия обычных целых чисел от гауссовых целых чисел и, в более общем смысле, от алгебраические целые числа.

Рекомендации

  1. ^ Старк 1978, п. 16
  2. ^ Старк 1978, п. 21 год
  3. ^ Левек 1996, п. 32
  4. ^ Левек 1996, п. 31 год
  5. ^ Гроссман, Дж. У. (1990). Дискретная математика. Нью-Йорк: Макмиллан. п. 213. ISBN  0-02-348331-8.
  6. ^ а б Шредер 2005, стр. 21–22
  7. ^ Шредер 2005, п. 19
  8. ^ Огилви, К.С.; Андерсон, Дж. Т. (1966). Экскурсии по теории чисел. Нью-Йорк: Oxford University Press. С. 27–29.
  9. ^ а б Шредер 2005, стр. 216–219
  10. ^ а б Левек 1996, п. 33
  11. ^ Старк 1978, п. 25
  12. ^ Руда 1948 г., стр. 47–48
  13. ^ Старк 1978, п. 18
  14. ^ Старк 1978, стр. 16–20
  15. ^ Кнут 1997, п. 320
  16. ^ Ловас, Л.; Pelikán, J .; Вестергомби, К. (2003). Дискретная математика: элементарная и не только. Нью-Йорк: Springer-Verlag. С. 100–101. ISBN  0-387-95584-4.
  17. ^ Кимберлинг, К. (1983). «Визуальный евклидов алгоритм». Учитель математики. 76: 108–109.
  18. ^ Даммит, Дэвид С .; Фут, Ричард М. (2004). Абстрактная алгебра. John Wiley & Sons, Inc., стр. 270–271. ISBN  978-0-471-43334-7.
  19. ^ Кнут 1997, стр. 319–320
  20. ^ Кнут 1997, стр. 318–319
  21. ^ Стиллвелл 1997, п. 14
  22. ^ а б Руда 1948 г., п. 43
  23. ^ а б Стюарт, Б. М. (1964). Теория чисел (2-е изд.). Нью-Йорк: Макмиллан. С. 43–44. LCCN  64010964.
  24. ^ Лазард, Д. (1977). "Лучший алгоритм Евклида для K[Икс] et Z". Comptes rendus de l'Académie des Sciences (На французском). 284: 1–4.
  25. ^ а б Кнут 1997, п. 318
  26. ^ а б Вайль, А. (1983). Теория чисел. Бостон: Биркхойзер. С. 4–6. ISBN  0-8176-3141-0.
  27. ^ Джонс, А. (1994). «Греческая математика до 300 г. н.э.». Сопутствующая энциклопедия истории и философии математических наук. Нью-Йорк: Рутледж. С. 46–48. ISBN  0-415-09238-8.
  28. ^ ван дер Варден, Б. Л. (1954). Пробуждение науки. перевод Арнольда Дрездена. Гронинген: P. Noordhoff Ltd., стр.114–115.
  29. ^ фон Фриц, К. (1945). «Открытие несоизмеримости Гиппасом из Метапонта». Анналы математики. 46 (2): 242–264. Дои:10.2307/1969021. JSTOR  1969021.
  30. ^ Хит, Т. (1949). Математика у Аристотеля. Oxford Press. стр.80–83.
  31. ^ Фаулер, Д. (1987). Математика Платоновской академии: новая реконструкция. Оксфорд: Издательство Оксфордского университета. С. 31–66. ISBN  0-19-853912-6.
  32. ^ Беккер, О. (1933). "Eudoxus-Studien I. Eine voreuklidische Proportionslehre und ihre Spuren bei Aristoteles und Euklid". Quellen und Studien zur Geschichte der Mathematik B. 2: 311–333.
  33. ^ а б Стиллвелл 1997, п. 31 год
  34. ^ а б Таттерсолл 2005, п. 70
  35. ^ Розен 2000, стр. 86–87
  36. ^ Руда 1948 г., стр. 247–248
  37. ^ Таттерсолл 2005, стр. 72, 184–185
  38. ^ Сондерсон, Николай (1740). Элементы алгебры в десяти книгах. Кембриджский университет Press. Получено 1 ноября 2016.
  39. ^ Таттерсолл 2005, стр. 72–76
  40. ^ а б Гаусс, К.Ф. (1832 г.). «Theoria резидуум биквадратичный». Comm. Soc. Рег. Sci. Gött. Rec. 4. Перепечатано в Гаусс, К. Ф. (2011). «Theoria резидуум biquadraticorum commentatio prima». Werke. 2. Cambridge Univ. Нажмите. С. 65–92. Дои:10.1017 / CBO9781139058230.004. и Гаусс, К. Ф. (2011). "Theoria резидуум biquadraticorum commentatio secunda". Werke. 2. Cambridge Univ. Нажмите. С. 93–148. Дои:10.1017 / CBO9781139058230.005.
  41. ^ Стиллвелл 1997, стр. 31–32
  42. ^ Лежен Дирихле 1894, стр. 29–31
  43. ^ Ричард Дедекинд в Лежен Дирихле 1894, Дополнение XI
  44. ^ Stillwell 2003, стр. 41–42
  45. ^ Штурм, К. (1829 г.). "Mémoire sur la résolution des équations numériques". Бык. des Sciences de Férussac (На французском). 11: 419–422.
  46. ^ Вайсштейн, Эрик В. «Целочисленное отношение». MathWorld.
  47. ^ Петерсон И. (12 августа 2002 г.). "Разбудить алгоритм Евклида". НаукаНовости.
  48. ^ Сипра, Барри Артур (16 мая 2000 г.). «Лучшее из 20 века: редакция назвала 10 лучших алгоритмов» (PDF). Новости SIAM. Общество промышленной и прикладной математики. 33 (4). Архивировано из оригинал (PDF) 22 сентября 2016 г.. Получено 19 июля 2016.
  49. ^ Коул, А. Дж .; Дэви, А. Дж. Т. (1969). «Игра, основанная на алгоритме Евклида и выигрышная стратегия для него». Математика. Газ. 53 (386): 354–357. Дои:10.2307/3612461. JSTOR  3612461.
  50. ^ Шпицнагель, Э. Л. (1973). «Свойства игры, основанной на алгоритме Евклида». Математика. Mag. 46 (2): 87–92. Дои:10.2307/2689037. JSTOR  2689037.
  51. ^ Розен 2000, п. 95
  52. ^ Робертс, Дж. (1977). Элементарная теория чисел: проблемно-ориентированный подход. Кембридж, Массачусетс: MIT Press. стр.1–8. ISBN  0-262-68028-9.
  53. ^ Jones, G.A .; Джонс, Дж. М. (1998). «Личность Безу». Элементарная теория чисел. Нью-Йорк: Springer-Verlag. С. 7–11.
  54. ^ Розен 2000, п. 81 год
  55. ^ Кон 1962, п. 104
  56. ^ Розен 2000, п. 91
  57. ^ Шредер 2005, п. 23
  58. ^ Розен 2000, стр. 90–93
  59. ^ а б Коши Т. (2002). Элементарная теория чисел с приложениями. Берлингтон, Массачусетс: Harcourt / Academic Press. С. 167–169. ISBN  0-12-421171-2.
  60. ^ Бах, Э.; Шаллит, Дж. (1996). Алгоритмическая теория чисел. Кембридж, Массачусетс: MIT Press. С. 70–73. ISBN  0-262-02405-5.
  61. ^ Старк 1978, стр. 26–36
  62. ^ а б Руда 1948 г., п. 44
  63. ^ Старк 1978, стр. 281–292
  64. ^ Розен 2000, стр. 119–125
  65. ^ Шредер 2005, стр. 106–107
  66. ^ Шредер 2005, стр. 108–109
  67. ^ Розен 2000, стр. 120–121
  68. ^ Старк 1978, п. 47
  69. ^ Шредер 2005, стр. 107–109
  70. ^ Стиллвелл 1997, стр. 186–187
  71. ^ Шредер 2005, п. 134
  72. ^ Луна, Т. К. (2005). Кодирование с исправлением ошибок: математические методы и алгоритмы. Джон Уайли и сыновья. п. 266. ISBN  0-471-64800-0.
  73. ^ Розен 2000, стр. 143–170
  74. ^ Шредер 2005, стр. 194–195
  75. ^ Грэм, Р.; Кнут, Д. Э.; Паташник, О. (1989). Конкретная математика. Эддисон-Уэсли. п. 123.
  76. ^ Виноградов, И.М. (1954). Элементы теории чисел. Нью-Йорк: Дувр. стр.3–13.
  77. ^ Crandall & Pomerance 2001, стр. 225–349
  78. ^ Кнут 1997, стр. 369–371
  79. ^ Шор, П.В. (1997). "Полиномиальные алгоритмы простой факторизации и дискретных логарифмов на квантовом компьютере". Журнал SIAM по научным и статистическим вычислениям. 26: 1484–1509. arXiv:Quant-ph / 9508027. Bibcode:1995квант.ч..8027S. Дои:10.1137 / s0097539795293172.
  80. ^ Диксон, Дж. Д. (1981). «Асимптотически быстрая факторизация целых чисел». Математика. Вычислить. 36 (153): 255–260. Дои:10.2307/2007743. JSTOR  2007743.
  81. ^ Ленстра, Х. В., мл. (1987). «Факторинг целых чисел с эллиптическими кривыми». Анналы математики. 126 (3): 649–673. Дои:10.2307/1971363. JSTOR  1971363.
  82. ^ Кнут 1997, стр. 380–384
  83. ^ Кнут 1997, стр. 339–364
  84. ^ Рейно, А.-А.-Л. (1811 г.). Traité d'arithmétique à l'usage des élèves qui se destinent à l'École Polytechnique (6-е изд.). Париж: Курсье. Примечание 60, стр. 34. Как цитирует Шаллит (1994).
  85. ^ Finck, P.-J.-E. (1841 г.). Traité élémentaire d'arithmétique à l'usage des Candidats aux écoles spéciales (На французском). Derivaux.
  86. ^ а б Шаллит, Дж. (1994). «Истоки анализа алгоритма Евклида». Historia Math. 21: 401–419. Дои:10.1006 / hmat.1994.1031.CS1 maint: ref = harv (связь)
  87. ^ Ламе, Г. (1844 г.). "Note sur la limit du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers". Comptes Rendus Acad. Sci. (На французском). 19: 867–870.
  88. ^ Гроссман, Х. (1924). «О количестве отделов при нахождении ОГТ». Американский математический ежемесячник. 31 (9): 443. Дои:10.2307/2298146. JSTOR  2298146.
  89. ^ Хонсбергер, Р. (1976). Математические жемчужины II. В Математическая ассоциация Америки. С. 54–57. ISBN  0-88385-302-7.
  90. ^ а б Кнут 1997, стр. 257–261
  91. ^ а б c Crandall & Pomerance 2001, стр. 77–79, 81–85, 425–431
  92. ^ а б Мёллер, Н. (2008). «Об алгоритме Шёнхаге и вычислении субквадратичного целочисленного НОД» (PDF). Математика вычислений. 77 (261): 589–607. Bibcode:2008MaCom..77..589M. Дои:10.1090 / S0025-5718-07-02017-0.
  93. ^ а б c Кнут 1997, п. 344
  94. ^ Руда 1948 г., п. 45
  95. ^ а б Кнут 1997, п. 343
  96. ^ Моллин 2008, п. 21 год
  97. ^ Левек 1996, п. 35 год
  98. ^ Моллин 2008, стр. 21–22
  99. ^ Кнут 1997, п. 353
  100. ^ Кнут 1997, п. 357
  101. ^ Тонков, Т. (1974). «О средней длине конечных цепных дробей». Acta Arithmetica. 26: 47–57.
  102. ^ Вайсштейн, Эрик В. "Константа Портера". MathWorld.
  103. ^ Портер, Дж. У. (1975). «Об одной теореме Хейльбронна». Математика. 22: 20–28. Дои:10.1112 / S0025579300004459.
  104. ^ Кнут, Д. Э. (1976). «Оценка константы Портера». Компьютеры и математика с приложениями. 2 (2): 137–139. Дои:10.1016/0898-1221(76)90025-0.
  105. ^ Диксон, Дж. Д. (1970). «Число шагов в алгоритме Евклида». J. Теория чисел. 2 (4): 414–422. Bibcode:1970JNT ..... 2..414D. Дои:10.1016 / 0022-314X (70) 90044-2.
  106. ^ Хайльбронн, Х.А. (1969). «О средней длине класса конечных непрерывных дробей». У Пола Турана (ред.). Теория чисел и анализ. Нью-Йорк: Пленум. С. 87–96. LCCN  76016027.
  107. ^ Кнут 1997, п. 354
  108. ^ а б Нортон, Г. Х. (1990). «Об асимптотическом анализе алгоритма Евклида». Журнал символических вычислений. 10: 53–58. Дои:10.1016 / S0747-7171 (08) 80036-3.
  109. ^ Кнут 1997, п. 355
  110. ^ Кнут 1997, п. 356
  111. ^ Кнут 1997, п. 352
  112. ^ Вагон, С. (1999). Mathematica в действии. Нью-Йорк: Springer-Verlag. С. 335–336. ISBN  0-387-98252-3.
  113. ^ Коэн 1993, п. 14
  114. ^ Коэн 1993, стр. 14–15, 17–18
  115. ^ Соренсон, Джонатан П. (2004). «Анализ обобщенного бинарного алгоритма НОД». Высокие числа и проступки: лекции в честь 60-летия Хью Коуи Уильямса. Коммуникации Института Филдса. 41. Провиденс, Род-Айленд: Американское математическое общество. С. 327–340. ISBN  9780821887592. МИСТЕР  2076257. Алгоритмы, которые сегодня чаще всего используются на практике [для вычисления наибольших общих делителей], вероятно, представляют собой двоичный алгоритм и алгоритм Евклида для меньших чисел, а также либо алгоритм Лемера, либо версию Лебелиана. k-арный алгоритм НОД для больших чисел.
  116. ^ Кнут 1997, стр. 321–323
  117. ^ Стейн, Дж. (1967). «Вычислительные проблемы, связанные с алгеброй Рака». Журнал вычислительной физики. 1 (3): 397–405. Bibcode:1967JCoPh ... 1..397S. Дои:10.1016/0021-9991(67)90047-2.
  118. ^ Кнут 1997, п. 328
  119. ^ Лемер, Д. Х. (1938). «Алгоритм Евклида для больших чисел». Американский математический ежемесячник. 45 (4): 227–233. Дои:10.2307/2302607. JSTOR  2302607.
  120. ^ Соренсон, Дж. (1994). «Два быстрых алгоритма НОД». J. Алгоритмы. 16: 110–144. Дои:10.1006 / jagm.1994.1006.
  121. ^ Вебер, К. (1995). «Ускоренный алгоритм НОД». ACM Trans. Математика. Softw. 21: 111–122. Дои:10.1145/200979.201042.
  122. ^ Ахо, А.; Хопкрофт, Дж.; Ульман, Дж. (1974). Разработка и анализ компьютерных алгоритмов. Нью-Йорк: Аддисон – Уэсли. стр.300–310. ISBN  0-201-00029-6.
  123. ^ Шёнхаге, А. (1971). "Schnelle Berechnung von Kettenbruchentwicklungen". Acta Informatica (на немецком). 1 (2): 139–144. Дои:10.1007 / BF00289520.
  124. ^ Чезари, Г. (1998). «Параллельная реализация целочисленного алгоритма НОД Шенхаге». В Г. Бюлер (ред.). Алгоритмическая теория чисел: Учеб. ANTS-III, Портленд, Орегон. Конспект лекций по информатике. 1423. Нью-Йорк: Springer-Verlag. С. 64–76.
  125. ^ Stehlé, D .; Циммерманн, П. (2005). "Точные таблицы Гала пересмотр метода ". Труды 17-й симпозиум IEEE по компьютерной арифметике (АРИФ-17 ). Лос-Аламитос, Калифорния: Пресса IEEE Computer Society.
  126. ^ а б c Ланг, С. (1984). Алгебра (2-е изд.). Менло-Парк, Калифорния: Аддисон – Уэсли. С. 190–194. ISBN  0-201-05487-6.
  127. ^ а б Вайнбергер П. «О евклидовых кольцах целых алгебраических чисел». Proc. Симпозиумы. Чистая математика. 24: 321–332.
  128. ^ а б c Stillwell 2003, стр. 151–152
  129. ^ Boyer, C.B .; Мерцбах, У. (1991). История математики (2-е изд.). Нью-Йорк: Вили. стр.116–117. ISBN  0-471-54397-7.
  130. ^ Кахори, Ф (1894). История математики. Нью-Йорк: Макмиллан. п.70. ISBN  0-486-43874-0.
  131. ^ Жу, Антуан (2009). Алгоритмический криптоанализ. CRC Press. п. 33. ISBN  9781420070033.
  132. ^ Fuks, D. B .; Табачников Серж (2007). Математический омнибус: тридцать лекций по классической математике. Американское математическое общество. п. 13. ISBN  9780821843161.
  133. ^ Дорогой, Дэвид (2004). «Постоянная Хинчина». Универсальная книга математики: от абракадабры до парадоксов Зенона. Джон Вили и сыновья. п. 175. ISBN  9780471667001.
  134. ^ Уильямс, Колин П. (2010). Исследования в области квантовых вычислений. Springer. С. 277–278. ISBN  9781846288876.
  135. ^ Кокс, Литтл и О'Ши 1997, стр. 37–46
  136. ^ Шредер 2005, стр. 254–259
  137. ^ Граттан-Гиннесс, Айвор (1990). Свертки во французской математике, 1800-1840: от исчисления и механики до математического анализа и математической физики. Том II: Повороты. Научные сети: исторические исследования. 3. Базель, Бостон, Берлин: Birkhäuser. п. 1148. ISBN  9783764322380. Нашим предметом здесь является «последовательность Штурма» функций, определенных из функции и ее производной с помощью алгоритма Евклида, чтобы вычислить количество действительных корней многочлена в заданном интервале.
  138. ^ Хайрер, Эрнст; Nørsett, Syvert P .; Ваннер, Герхард (1993). «Критерий Рауса – Гурвица». Решение обыкновенных дифференциальных уравнений I: нежесткие задачи. Серия Спрингера в вычислительной математике. 8 (2-е изд.). Springer. стр. 81 и далее. ISBN  9783540566700.
  139. ^ а б c Stillwell 2003, стр. 101–116
  140. ^ а б c Хенсли, Дуг (2006). Непрерывные дроби. World Scientific. п. 26. ISBN  9789812564771.
  141. ^ Дедекинд, Ричард (1996). Теория алгебраических целых чисел. Кембриджская математическая библиотека. Издательство Кембриджского университета. С. 22–24. ISBN  9780521565189.
  142. ^ Johnston, Bernard L .; Ричман, Фред (1997). Числа и симметрия: введение в алгебру. CRC Press. п. 44. ISBN  9780849303012.
  143. ^ Адамс, Уильям У .; Гольдштейн, Ларри Джоэл (1976). Введение в теорию чисел. Прентис-Холл. Упражнение 24, с. 205. ISBN  9780134912820. Сформулируйте и докажите аналог китайской теоремы об остатках для целых гауссовских чисел.
  144. ^ Старк 1978, п. 290
  145. ^ Кон 1962, стр. 104–105
  146. ^ Лауритцен, Нильс (2003). Конкретная абстрактная алгебра: от чисел к базису Грёбнера. Издательство Кембриджского университета. п. 130. ISBN  9780521534109.CS1 maint: ref = harv (связь)
  147. ^ Лауритцен (2003), п. 132
  148. ^ Лауритцен (2003), п. 161
  149. ^ а б Шарп, Дэвид (1987). Кольца и факторизация. Издательство Кембриджского университета. п.55. ISBN  9780521337182.CS1 maint: ref = harv (связь)
  150. ^ Шарп (1987), п. 52
  151. ^ Лауритцен (2003), п. 131
  152. ^ Ламе, Г. (1847). "Mémoire sur la résolution, en nombres complex, de l'équation A"п + Bп + Cп = 0". J. Math. Pures Appl. (На французском). 12: 172–184.
  153. ^ Эдвардс, Х. (2000). Последняя теорема Ферма: генетическое введение в алгебраическую теорию чисел. Springer. п. 76.
  154. ^ Кон 1962, стр. 104–110
  155. ^ Левек, В. Дж. (2002) [1956]. Темы теории чисел, тома I и II. Нью-Йорк: Dover Publications. С. II: 57, 81. ISBN  978-0-486-42539-9. Zbl  1009.11001.
  156. ^ а б Кларк, Д. А. (1994). «Квадратичное поле, которое является евклидовым, но не евклидово по норме». Manuscripta Mathematica. 83: 327–330. Дои:10.1007 / BF02567617. Zbl  0817.11047.
  157. ^ а б Давыдов, Джулиана; Сарнак, Питер; Валетт, Ален (2003). «2.6 Арифметика целочисленных кватернионов». Элементарная теория чисел, теория групп и графы Рамануджана. Тексты студентов Лондонского математического общества. 55. Издательство Кембриджского университета. С. 59–70. ISBN  9780521531436.
  158. ^ Рибенбойм, Пауло (2001). Классическая теория алгебраических чисел. Universitext. Springer-Verlag. п. 104. ISBN  9780387950709.

Библиография

внешняя ссылка