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

Из Википедии, бесплатной энциклопедии

Метод Евклида для нахождения наибольшего общего делителя (НОД) двух начальных длин BA и DC, которые определяются как кратные общей «единичной» длине. Поскольку длина DC короче, ее используют для «измерения» BA, но только один раз, поскольку остаток EA меньше DC. EA теперь измеряет (в два раза) более короткую длину DC, а остаток FC короче, чем EA. Затем FC измеряет (трижды) длину EA. Поскольку остатка нет, процесс заканчивается тем, что FC становится НОД. Справа пример Никомаха с числами 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 году ( теорема Ламе ), [1] [2] и знаменует собой начало теории сложности вычислений . Дополнительные методы повышения эффективности алгоритма были разработаны в 20 веке.

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

Исходный алгоритм был описан только для натуральных чисел и геометрических длин (действительных чисел), но в 19 веке алгоритм был обобщен на другие типы чисел, такие как целые гауссовы числа и полиномы одной переменной. Это привело к появлению современных абстрактных алгебраических понятий, таких как евклидовы области .

Предыстория: наибольший общий делитель [ править ]

Алгоритм Евклида вычисляет наибольший общий делитель (НОД) двух натуральных чисел a и b . Наибольший общий делитель g — это наибольшее натуральное число, которое делит и a , и b , не оставляя остатка. Синонимы НОД включают наибольший общий делитель (НОД), наибольший общий делитель (НСД), наибольший общий делитель (НСД) и наибольшую общую меру (НОМ). Наибольший общий делитель часто записывается как НОД( a , b ) или, проще говоря, как ( a , b ) , [3] хотя последнее обозначение неоднозначно, оно также используется для таких понятий, как идеал в кольце целых чисел , который тесно связан с НОД.

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

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

Пусть g = НОД( a , b ) . Поскольку a и b кратны g , их можно записать a = mg и b = ng , и не существует большего числа G > g , для которого это верно. Натуральные числа m и n должны быть взаимно простыми, поскольку любой общий делитель можно вычесть из m и n , чтобы увеличить g . Таким образом, любое другое число c , которое делит и a , и b, должно также делить g . Наибольший общий делитель g чисел a и b — это единственный (положительный) общий делитель чисел a и b , который делится на любой другой общий делитель c . [6]

Наибольший общий делитель можно представить следующим образом. [7] Рассмотрим прямоугольную область a на b и любой общий делитель c делит и a , и b , который точно . Стороны прямоугольника можно разделить на отрезки длиной c , что делит прямоугольник на сетку квадратов с длиной стороны c . НОД g — наибольшее значение 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 ).

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

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

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

НОД( a , b , c ) = НОД( a , НОД( b , c )) = НОД(НОД( a , b ), c ​​) = НОД(НОД( a , c ), b ).

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

Описание [ править ]

Процедура [ править ]

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

Поскольку последовательность неотрицательных целых чисел строго убывает, то в конечном итоге оно должно прекратиться . Другими словами, поскольку для каждого и каждый целое число, которое строго меньше предыдущего , в конечном итоге не может быть неотрицательного целого числа меньше нуля, и, следовательно, алгоритм должен завершиться. Фактически, алгоритм всегда завершается на n-м шаге с равен нулю. [15]

Для иллюстрации предположим, что запрошен НОД 1071 и 462. Изначально последовательность и чтобы найти , нам нужно найти целые числа и такой, что:

.

Это частное с . Это определяет и так последовательность теперь . Следующий шаг — продолжить последовательность, чтобы найти путем нахождения целых чисел и такой, что:

.

Это частное с . Это определяет и так последовательность теперь . Следующий шаг — продолжить последовательность, чтобы найти путем нахождения целых чисел и такой, что:

.

Это частное с . Это определяет и поэтому последовательность завершается как как нет дальнейшего неотрицательного целого числа, меньшего, чем может быть найден. Предпоследний остаток следовательно, это запрошенный НОД:

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

Доказательство действительности [ править ]

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

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

р N -2 = q N р N -1

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

r N −3 = q N −1 r N −2 + r N −1

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

На втором этапе любое натуральное число c , которое делит и a , и b (другими словами, любой общий делитель a и b делит остатки rk ) , . По определению a и b можно записать как кратные c : a = mc и b = nc , где m и n — натуральные числа. Следовательно, c делит первоначальный остаток r 0 , поскольку r 0 знак равно a - q 0 b знак равно mc - q 0 nc знак равно ( m - q 0 n ) c . Аналогичное рассуждение показывает, что c также делит последующие остатки r 1 , r 2 и т. д. Следовательно, наибольший общий делитель g должен делить r N −1 , из чего следует, что g r N −1 . Поскольку первая часть рассуждения показала обратное ( r N −1 g ), отсюда следует, что g = r N −1 . Таким образом, g — наибольший общий делитель всех последующих пар: [17] [18]

г знак равно НОД( а , б ) знак равно НОД( б , р 0 ) знак равно НОД( р 0 , р 1 ) знак равно … знак равно НОД( р N -2 , р N -1 ) знак равно р N -1 .

Рабочий пример [ править ]

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

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

1071 = 2 × 462 + 147.

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

462 = 3 × 147 + 21.

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

147 = 7 × 21 + 0.

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

Шаг k Уравнение Частное и остаток
0 1071 = д 0 462 + г 0 q 0 = 2 и r 0 = 147
1 462 = q 1 147 + r 1 q 1 = 3 и r 1 = 21
2 147 = q 2 21 + r 2 q 2 = 7 и r 2 = 0 ; алгоритм заканчивается

Визуализация [ править ]

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

Евклидово деление [ править ]

На каждом шаге k алгоритм Евклида вычисляет частное q k и остаток r k от двух чисел r k −1 и r k −2.

р k −2 = q k r k −1 + r k

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

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

р k знак равно р k -2 мод р k -1 .

Реализации [ править ]

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

функция  НОД(а, б) 
      в то время как  б ≠ 0 
          т := б 
          б :=  мод  б 
          а := т 
      вернуть 

начале k- й итерации переменная b содержит последний остаток r k −1 , тогда как переменная a содержит свою предшественницу rk −2 . В Шаг b := a mod b эквивалентен приведенной выше рекурсивной формуле r k r k −2 mod r k −1 . Временная переменная t сохраняет значение r k −1 следующий остаток r k , пока вычисляется . В конце итерации цикла переменная b содержит остаток r k , тогда как переменная a содержит свою предшественницу r k −1 .

(Если разрешены отрицательные входные данные или если функция mod может возвращать отрицательные значения, последнюю строку необходимо изменить на return abs (a).)

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

функция  НОД(а, б) 
      в то время как  а ≠ б  
          если  а > б 
              а := а - б 
          еще 
              б := б - а 
      вернуть 

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

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

функция  НОД(а, б) 
      если  б = 0 
          вернуть  иначе 
         верните  НОД(b,  мод  b) 
 

(Как и выше, если разрешены отрицательные входные данные или если функция mod может возвращать отрицательные значения, инструкцию « return a» необходимо заменить на « return max (a, -a)».)

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

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

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

р k −2 = q k r k −1 + r k

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

r k −2 = ( q k + 1) r k −1 + e k

если r k −1 > 0 или

r k −2 = ( q k − 1) r k −1 + e k

если р k −1 < 0 .

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

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

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

Леопольд Кронекер показал, что эта версия требует наименьшего количества шагов по сравнению с любой версией алгоритма Евклида. [24] [25] В более общем плане было доказано, что для любых входных чисел a и b количество шагов минимально тогда и только тогда, когда q k выбрано для того, чтобы где это золотое сечение . [26]

Историческое развитие [ править ]

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

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

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

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

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

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

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

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

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

В 1969 году Коул и Дэви разработали игру для двух игроков, основанную на алгоритме Евклида, под названием « Игра Евклида» . [51] которая имеет оптимальную стратегию. [52] Игроки начинают с двумя стопками камней a и b . Игроки по очереди вынимают m кратных кучек меньшего размера из большей. Таким образом, если две кучки состоят из камней x и y , где x больше, чем y , следующий игрок может уменьшить большую стопку из x камней до x - моих камней, если последнее является неотрицательным целым числом. Победителем становится тот игрок, который первым уменьшит одну стопку до нуля камней. [53] [54]

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

Личность Безу [ править ]

Тождество Безу утверждает, что наибольший общий делитель g двух целых чисел a и b может быть представлен как линейная сумма исходных двух чисел a и b . [55] Другими словами, всегда можно найти целые числа s и t такие, что g = sa + tb . [56] [57]

Целые числа s и t могут быть вычислены из частных q 0 , q 1 и т. д. путем изменения порядка уравнений в алгоритме Евклида. [58] Начиная с предпоследнего уравнения, g можно выразить через частное q N -1 и два предыдущих остатка, r N -2 и r N -3 :

грамм знак равно р N -1 знак равно р N -3 - q N -1 р N -2 .

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

r N −2 = r N −4 q N −2 r N −3 и
р N -3 знак равно р N -5 - q N -3 р N -4 .

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

р 2 знак равно р 0 - q 2 р 1
р 1 знак равно б - q 1 р 0
р 0 знак равно а - q 0 б .

всех остатков r 0 , r 1 После подстановки и т. д. окончательное уравнение выражает g как линейную сумму a и b , так что g = sa + tb .

Алгоритм Евклида и, следовательно, тождество Безу можно обобщить на контекст евклидовых областей .

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

Тождество Безу дает еще одно определение наибольшего общего делителя g двух чисел a и b . [12] Рассмотрим множество всех чисел ua + vb , где u и v — любые два целых числа. Поскольку a и b делятся на g , каждое число в наборе делится на g . Другими словами, каждое число в наборе является целым числом, кратным g . Это верно для любого общего делителя a и b . Однако, в отличие от других общих делителей, наибольший общий делитель является членом множества; по тождеству Безу выбор u = s и v = t дает g . Меньший общий делитель не может быть членом множества, поскольку каждый член множества должен делиться на g . И наоборот, любое кратное m числа g можно получить, выбрав u = ms и v = mt , где s и t — целые числа тождества Безу. В этом можно убедиться, умножив тождество Безу на m ,

мг = мса + мтб .

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

Используя этот результат, можно решить некоторые проблемы. [59] Например, рассмотрим два мерных стакана объемом a и b . Добавляя/вычитая u , кратное первой чашке, и v , кратное второй чашке, любой объем ua + vb можно измерить . Все эти объемы кратны g = gcd( a , b ).

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

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

s k знак равно s k -2 - q k s k -1
т k знак равно т k -2 - q k т k -1

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

с -2 = 1, т -2 = 0
s −1 = 0, t −1 = 1.

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

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

р j = s j a + t j b

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

р k знак равно р k -2 - q k р k -1 .

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

р k знак равно ( s k -2 а + т k -2 б ) - q k ( s k -1 а + т k -1 б ).

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

р k знак равно s k а + т k б знак равно ( s k -2 - q k s k -1 ) а + ( т k -2 - q k т k -1 ) б .

Матричный метод [ править ]

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

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

Пусть M представляет собой произведение всех фактор-матриц

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

Чтобы выразить g как линейную сумму a и b , обе части этого уравнения можно умножить обратную матрицу M. на [61] [62] Определитель равен M ( −1) Н +1 , поскольку оно равно произведению определителей фактор-матриц, каждая из которых отрицательна. Поскольку определитель M никогда не равен нулю, вектор конечных остатков можно решить, используя обратное M

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

г = (−1) Н +1 ( м 22 а - м 12 б ),

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

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

Тождество Безу важно для многих приложений алгоритма Евклида, таких как демонстрация уникальной разложения чисел на простые множители. [63] Чтобы проиллюстрировать это, предположим, что число L можно записать как произведение двух множителей u и v , то есть L = uv . Если другое число w также делит L , но взаимно просто с u , то w должно разделить v по следующему аргументу: если наибольший общий делитель u и w равен 1, то целые числа s и t можно найти такие, что

1 = вс + вт

по личности Безу. Умножение обеих частей на v дает соотношение:

v = suv + twv = sL + twv

Поскольку w делит оба члена в правой части, он также должен делить и левую часть, v . Этот результат известен как лемма Евклида . [64] простое число делит L , то оно должно делить хотя бы один делитель L. В частности, если И наоборот, если число w взаимно просто с каждым из рядов чисел a 1 , a 2 , ..., an n , то w также взаимно просто с их произведением a 1 × a 2 × ... × a n . [64]

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

L знак равно п 1 п 2 п м знак равно q 1 q 2 q п .

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

Линейные диофантовы уравнения [ править ]

«Диагональная линия, идущая из верхнего левого угла в нижний правый. Пятнадцать кругов расположены через равные промежутки вдоль линии. Перпендикулярные оси координат xy берут свое начало в левом нижнем углу; линия пересекает ось Y в левом верхнем углу. и пересечь ось X в правом нижнем углу».
График линейного диофантова уравнения , 9 x + 12 y = 483. Решения показаны синими кружками.

Диофантовы уравнения — это уравнения, в которых решения ограничены целыми числами; они названы в честь александрийского математика III века Диофанта . [66] Типичное линейное диофантово уравнение ищет целые числа x и y такие, что [67]

топор + по = с

где a , b и c — целые числа. Это можно записать как уравнение для x в модульной арифметике :

топор c мод б .

Пусть g — наибольший общий делитель чисел a и b . Оба члена в ax + by делятся на g ; следовательно, c также должно делиться на g , иначе уравнение не имеет решений. Разделив обе части на c / g , уравнение можно свести к тождеству Безу

в + ТБ = г

где s и t можно найти с помощью расширенного алгоритма Евклида . [68] Это дает одно решение диофантова уравнения: x 1 = s ( c / g ) и y 1 = t ( c / g ).

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

топор 1 + на 1 = c = топор 2 + на 2

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

а ( Икс 1 - Икс 2 ) знак равно б ( y 2 - y 1 ).

Следовательно, наименьшая разница между двумя x решениями равна b / g , тогда как наименьшая разница между двумя y решениями равна a / g . Таким образом, решения могут быть выражены как

х = х 1 - бу / г
y знак равно y 1 + au / g .

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

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

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

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

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

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

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

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

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

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

С помощью этих чисел h i любое целое число x можно восстановить по его остаткам x i с помощью уравнения

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

Дерево Штерна – Броко [ править ]

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

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

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

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

Цепные дроби [ править ]

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

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

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

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

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

что можно подтвердить расчетом.

Алгоритмы факторизации [ править ]

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

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

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

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

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

Количество шагов [ править ]

Количество шагов для вычисления НОД двух натуральных чисел a и b можно обозначить T ( a , b ). [95] Если g — НОД чисел a и b , то a = mg и b = ng для двух взаимно простых чисел m и n . Затем

Т ( а , б ) знак равно Т ( м , п )

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

Рекурсивная природа алгоритма Евклида дает другое уравнение

Т ( а , б ) знак равно 1 + Т ( б , р 0 ) знак равно 2 + Т ( р 0 , р 1 ) знак равно … знак равно N + Т ( р N -2 , р N -1 ) знак равно N + 1

где T ( x , 0) = 0 по предположению. [95]

В худшем случае [ править ]

Если алгоритм Евклида требует N шагов для пары натуральных чисел a > b > 0, наименьшими значениями a и b , для которых это верно, являются числа Фибоначчи F N +2 и F N +1 соответственно. [97] Точнее, если алгоритм Евклида требует N шагов для пары a > b , то a F N +2 и b F N +1 . Это можно показать с помощью индукции . [98] Если N = 1, b делит a без остатка; наименьшие натуральные числа, для которых это верно, — это b = 1 и a = 2, которые равны F 2 и F 3 соответственно. Теперь предположим, что результат справедлив для всех значений N вплоть до M − 1. Первый шаг M -шагового алгоритма — это a = q 0 b + r 0 , а алгоритм Евклида требует M − 1 шагов для пары b > р 0 . предположению индукции имеем b FM . +1 и r 0 FM M По Следовательно a = q 0 b + r 0 b + r 0 F M +1 + F M = FM +2 , , что и есть желаемое неравенство. Это доказательство, опубликованное Габриэлем Ламе в 1844 году, представляет собой начало теории сложности вычислений . [99] а также первое практическое применение чисел Фибоначчи. [97]

Этого результата достаточно, чтобы показать, что число шагов в алгоритме Евклида никогда не может превышать количество его цифр (по основанию 10) более чем в пять раз. [100] Ибо если алгоритм требует N шагов, то b больше или равно F N +1 , что, в свою очередь, больше или равно φ. Н -1 , где φ золотое сечение . Поскольку b φ Н -1 , то N − 1 ≤ log φ b . Поскольку log 10 φ > 1/5, ( N − 1)/5 < log 10 φ log φ b = log 10 b . Таким образом, N ≤ 5 log 10 b . Таким образом, алгоритму Евклида всегда требуется менее O ( h ) делений, где h — количество цифр в меньшем числе b .

Средний [ править ]

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

Однако, поскольку T ( a , b ) резко колеблется в зависимости от НОД двух чисел, усредненная функция T ( a ) также является «шумной». [101]

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

Существуют φ ( a ) взаимно простые целые числа, меньшие, чем a , где φ функция тотента Эйлера . Это среднее значение тау плавно растет с увеличением [102] [103]

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

где γ постоянная Эйлера–Машерони , а ζ’ — производная дзета- функции Римана . [105] [106] Старший коэффициент (12/π 2 ) ln 2 определяли двумя независимыми методами. [107] [108]

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

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

где Λ( d ) — функция Мангольдта . [111]

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

Подстановка приближенной формулы для T ( a ) в это уравнение дает оценку Y ( n ) [112]

Вычислительные затраты на шаг [ править ]

На каждом шаге k алгоритма Евклида частное q k и остаток r k вычисляются для заданной пары целых чисел r k −2 и r k −1.

р k -2 знак равно q k р k -1 + р k .

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

р k знак равно р k -2 - q k р k -1 .

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

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

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

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

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

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

Алгоритм двоичного НОД является эффективной альтернативой, которая заменяет деление более быстрыми операциями за счет использования двоичного представления, используемого компьютерами. [118] [119] Однако эта альтернатива также масштабируется как O ( h ²) . Обычно он работает быстрее, чем алгоритм Евклида на реальных компьютерах, хотя масштабируется таким же образом. [93] Дополнительную эффективность можно получить, исследуя только первые цифры двух чисел a и b . [120] [121] Бинарный алгоритм можно расширить на другие базы ( k -арные алгоритмы), [122] с пятикратным увеличением скорости. [123] Алгоритм НОД Лемера использует тот же общий принцип, что и двоичный алгоритм, для ускорения вычислений НОД в произвольных базисах.

Рекурсивный подход для очень больших целых чисел (более 25 000 цифр) приводит к квазилинейным целочисленным алгоритмам НОД: [124] такие как Шёнхаге, [125] [126] и Штеле и Циммерманн. [127] Эти алгоритмы используют матричную форму 2×2 алгоритма Евклида, приведенную выше . Эти квазилинейные методы обычно масштабируются как O ( h log h 2 журнал журнал ч ). [93] [94]

Обобщения [ править ]

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

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

Алгоритм Евклида можно применить к действительным числам , как описано Евклидом в 10-й книге « Начал » . Цель алгоритма — идентифицировать такое действительное число g , что два заданных действительных числа a и b являются его целыми кратными: a = mg и b = ng , где m и n целые числа . [28] Эта идентификация эквивалентна нахождению целочисленного отношения между действительными числами a и b ; то есть он определяет целые числа s и t такие, что sa + tb = 0 . Если такое уравнение возможно, то a и b называются соизмеримыми длинами, в противном случае — несоизмеримыми длинами . [131] [132]

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

и может быть записана как конечная цепная дробь [ q 0 ; q 1 , q 2 , ..., q N ] . Если алгоритм не останавливается, дробь a / b является иррациональным числом и может быть описана бесконечной цепной дробью [ q 0 ; q 1 , q 2 , …] . [133] Примерами бесконечных цепных дробей являются золотое сечение φ = [1; 1, 1, ...] и квадратный корень из двух , 2 = [1; 2, 2, ...] . [134] Алгоритм вряд ли остановится, так как почти все отношения a / b двух действительных чисел иррациональны. [135]

Бесконечная цепная дробь может быть усечена на шаге k [ q 0 ; q 1 , q 2 , ..., q k ] для получения аппроксимации a / b , которая улучшается по k мере увеличения . Аппроксимация описывается подходящими дробями m k / n k ; числитель и знаменатель взаимно просты и подчиняются рекуррентному соотношению

где m −1 = n −2 = 1 и m −2 = n −1 = 0 — начальные значения рекурсии. Сходящееся m k / n k является лучшим рационального числа приближением к a / b со знаменателем n k : [136]

Полиномы [ править ]

Полиномы от одной переменной x можно складывать, умножать и разлагать на множители в неприводимые многочлены , которые являются аналогами простых чисел для целых чисел. наибольшего общего делителя Полином g ( x ) двух многочленов a ( x ) и b ( x ) определяется как произведение их общих неприводимых многочленов, которые можно идентифицировать с помощью алгоритма Евклида. [128] Основная процедура аналогична процедуре для целых чисел. На каждом шаге k фактор-многочлен q k ( x ) и полином остатка r k ( x ) идентифицируются для удовлетворения рекурсивного уравнения

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

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

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

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

Полиномиальный алгоритм Евклида имеет и другие приложения, такие как цепочки Штурма — метод подсчета нулей многочлена , лежащих внутри заданного вещественного интервала . [139] Это, в свою очередь, имеет приложения в нескольких областях, таких как критерий устойчивости Рауса – Гурвица в теории управления . [140]

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

Гауссовы целые числа [ править ]

«Набор точек, лежащих внутри круга. Рисунок из точек имеет четырехкратную симметрию, т. е. повороты на 90 градусов оставляют рисунок неизменным. Узор можно также отразить зеркально относительно четырех линий, проходящих через центр круга: вертикальной и горизонтальной оси и две диагональные линии под углом ±45 градусов».
Распределение гауссовских простых чисел u + vi в комплексной плоскости с нормами u 2 + v 2 менее 500

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

Алгоритм Евклида, разработанный для двух гауссовских целых чисел α и β, почти такой же, как и для обычных целых чисел: [142] но отличается в двух отношениях. Как и ранее, мы полагаем r −2 = α и r −1 = β , и задача на каждом шаге k состоит в том, чтобы отождествить частное q k и остаток r k такие, что

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

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

Евклидовы домены [ править ]

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

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

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

Уникальная факторизация евклидовых областей полезна во многих приложениях. Например, уникальная факторизация гауссовских целых чисел удобна при выводе формул для всех троек Пифагора и при доказательстве теоремы Ферма о суммах двух квадратов . [141] Уникальная факторизация также была ключевым элементом в попытке доказательства Великой теоремы Ферма, опубликованной в 1847 году Габриэлем Ламе, тем же математиком, который анализировал эффективность алгоритма Евклида, основываясь на предложении Жозефа Лиувилля . [154] Подход Ламе требовал уникальной факторизации чисел вида x + ωy , где x и y — целые числа, а ω = e 2 / прибл. является корнем n- й степени из 1, т.е. ω н = 1 . Хотя этот подход успешен для некоторых значений n (например, n = 3 , целые числа Эйзенштейна ), в целом такие числа не учитываются однозначно. Эта неудача с уникальной факторизацией в некоторых круговых полях привела Эрнста Куммера к концепции идеальных чисел , а позже и Рихарда Дедекинда к идеалам . [155]

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

«Набор точек, лежащих внутри круга. Рисунок из точек имеет шестикратную симметрию, т. е. повороты на 60 градусов оставляют рисунок неизменным. Узор можно также отразить зеркально относительно шести линий, проходящих через центр круга: вертикальной и горизонтальной оси и четыре диагональные линии под углом ±30 и ±60 градусов».
Распределение простых чисел Эйзенштейна u + на комплексной плоскости с нормами меньше 500. Число ω является кубическим корнем из 1 .

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

Однако если D действительно кратно четырем плюс один, то

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

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

Некоммутативные кольца [ править ]

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

где ψ 0 представляет собой частное, а ρ 0 — остаток. Здесь кавычка и остаток выбираются так, чтобы (если он не равен нулю) остаток имел N ( ρ 0 ) < N ( β ) для «евклидовой функции» N , определенной аналогично евклидовым функциям евклидовых областей в некоммутативном случае. [159] Это уравнение показывает, что любой общий правый делитель α и β также является общим делителем остатка ρ 0 . Аналогичное уравнение для левых делителей будет иметь вид

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

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

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

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

См. также [ править ]

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

Примечания [ править ]

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

Ссылки [ править ]

  1. ^ Ламе, Габриэль (1844). «Обратите внимание на ограничение количества делений при поиске наибольшего общего делителя между двумя целыми числами». Отчеты сессий Академии наук (на французском языке). 19 : 867–870.
  2. ^ Шалит, Джеффри (1 ноября 1994 г.). «Истоки анализа алгоритма Евклида» . История Математики . 21 (4): 401–419. дои : 10.1006/hmat.1994.1031 . ISSN   0315-0860 .
  3. ^ Старк 1978 , с. 16
  4. ^ Старк 1978 , с. 21
  5. ^ ЛеВек 1996 , с. 32
  6. ^ ЛеВек 1996 , с. 31
  7. ^ Гроссман, JW (1990). Дискретная математика . Нью-Йорк: Макмиллан. п. 213. ИСБН  0-02-348331-8 .
  8. ^ Перейти обратно: а б Шредер 2005 , стр. 21–22.
  9. ^ Шредер 2005 , с. 19
  10. ^ Огилви, CS ; Андерсон, Дж. Т. (1966). Экскурсии по теории чисел . Нью-Йорк: Издательство Оксфордского университета . стр. 27–29.
  11. ^ Перейти обратно: а б Шредер 2005 , стр. 216–219.
  12. ^ Перейти обратно: а б ЛеВек 1996 , с. 33
  13. ^ Старк 1978 , с. 25
  14. ^ Руда 1948 , стр. 47–48
  15. ^ Старк 1978 , с. 18
  16. ^ Старк 1978 , стр. 16–20.
  17. ^ Кнут 1997 , с. 320
  18. ^ Ловас, Л. ; Пеликан, Дж.; Вестергомби, К. (2003). Дискретная математика: элементарная и не только . Нью-Йорк: Springer-Verlag. стр. 100–101. ISBN  0-387-95584-4 .
  19. ^ Кимберлинг, К. (1983). «Визуальный евклидов алгоритм». Учитель математики . 76 : 108–109.
  20. ^ Даммитт, Дэвид С.; Фут, Ричард М. (2004). Абстрактная алгебра . Джон Уайли и сыновья, Inc. стр. 100-1 270–271. ISBN  978-0-471-43334-7 .
  21. ^ Кнут 1997 , стр. 319–320.
  22. ^ Кнут 1997 , стр. 318–319.
  23. ^ Стиллвелл 1997 , с. 14
  24. ^ Перейти обратно: а б Руда 1948 , с. 43
  25. ^ Перейти обратно: а б Стюарт, Б.М. (1964). Теория чисел (2-е изд.). Нью-Йорк: Макмиллан. стр. 43–44. LCCN   64010964 .
  26. ^ Лазард, Д. (1977). «Лучший алгоритм Евклида для K [ X ] и Z ». Comptes Rendus de l’Académie des Sciences (на французском языке). 284 : 1–4.
  27. ^ Перейти обратно: а б Кнут 1997 , с. 318
  28. ^ Перейти обратно: а б Вейль, А. (1983). Теория чисел . Бостон: Биркхойзер. стр. 4–6. ISBN  0-8176-3141-0 .
  29. ^ Джонс, А. (1994). «Греческая математика до 300 г. н.э.». Сопутствующая энциклопедия истории и философии математических наук . Нью-Йорк: Рутледж. стр. 46–48. ISBN  0-415-09238-8 .
  30. ^ ван дер Варден, БЛ (1954). Пробуждение науки . перевод Арнольда Дрездена. Гронинген: P. Noordhoff Ltd. стр. 114–115 .
  31. ^ фон Фриц, К. (1945). «Открытие несоизмеримости Гиппасом Метапонтумским». Анналы математики . 46 (2): 242–264. дои : 10.2307/1969021 . JSTOR   1969021 .
  32. ^ Хит, ТЛ (1949). Математика у Аристотеля . Оксфорд Пресс. стр. 80–83 .
  33. ^ Фаулер, Д.Х. (1987). Математика Академии Платона: новая реконструкция . Оксфорд: Издательство Оксфордского университета. стр. 31–66. ISBN  0-19-853912-6 .
  34. ^ Беккер, О. (1933). «Евдокс изучает I. Доевклидову теорию пропорций и ее следы у Аристотеля и Евклида». Источники и исследования по истории математики Б. 2 :311-333.
  35. ^ Перейти обратно: а б Стиллвелл 1997 , с. 31
  36. ^ Перейти обратно: а б Таттерсолл 2005 , с. 70
  37. ^ Розен 2000 , стр. 86–87.
  38. ^ Руда 1948 , стр. 247–248
  39. ^ Таттерсолл 2005 , стр. 72, 184–185.
  40. ^ Сондерсон, Николас (1740). Элементы алгебры в десяти книгах . Издательство Кембриджского университета . Проверено 1 ноября 2016 г.
  41. ^ Таттерсолл 2005 , стр. 72–76.
  42. ^ Перейти обратно: а б Гаусс, CF (1832). «Теория биквадратичных вычетов». Комм. Соц. Рег. Знать Гетт. Рек . 4 . Перепечатано в Гаусс, CF (2011). «Теория биквадратичных вычетов, первый комментарий». Верке . Том. 2. Кембриджский университет. Нажимать. стр. 65–92. дои : 10.1017/CBO9781139058230.004 . ISBN  9781139058230 . и Гаусс, CF (2011). «Теория биквадратичных вычетов, второй комментарий». Верке . Том. 2. Кембриджский университет. Нажимать. стр. 93–148. дои : 10.1017/CBO9781139058230.005 . ISBN  9781139058230 .
  43. ^ Стиллвелл 1997 , стр. 31–32.
  44. ^ Лежен Дирихле 1894 , стр. 29–31
  45. ^ Рихард Дедекинд в Lejeune Dirichlet 1894 , Приложение XI
  46. ^ Стиллвелл 2003 , стр. 41–42.
  47. ^ Штурм, К. (1829). «Память при решении числовых уравнений». Бык. Des Sciences de Férussac (на французском языке). 11 : 419–422.
  48. ^ Фергюсон, HRP ; Форкад, RW (1979). «Обобщение алгоритма Евклида для действительных чисел на все размерности больше двух» . Бюллетень Американского математического общества . Новая серия. 1 (6): 912–914. дои : 10.1090/S0273-0979-1979-14691-3 . МР   0546316 .
  49. ^ Петерсон, И. (12 августа 2002 г.). «Усовершенствуем алгоритм Евклида» . Новости науки .
  50. ^ Ципра, Барри Артур (16 мая 2000 г.). «Лучшее 20-го века: редакторы назвали 10 лучших алгоритмов» (PDF) . СИАМ Новости . 33 (4). Общество промышленной и прикладной математики . Архивировано из оригинала (PDF) 22 сентября 2016 года . Проверено 19 июля 2016 г.
  51. ^ Коул, Эй Джей; Дэви, AJT (1969). «Игра, основанная на алгоритме Евклида, и выигрышная стратегия для нее». Математика. Газ . 53 (386): 354–357. дои : 10.2307/3612461 . JSTOR   3612461 . S2CID   125164797 .
  52. ^ Шпицнагель, Э.Л. (1973). «Свойства игры по алгоритму Евклида». Математика. Маг . 46 (2): 87–92. дои : 10.2307/2689037 . JSTOR   2689037 .
  53. ^ Розен 2000 , с. 95
  54. ^ Робертс, Дж. (1977). Элементарная теория чисел: проблемно-ориентированный подход . Кембридж, Массачусетс: MIT Press . стр. 1–8 . ISBN  0-262-68028-9 .
  55. ^ Джонс, Джорджия; Джонс, Дж. М. (1998). «Личность Безу». Элементарная теория чисел . Нью-Йорк: Springer-Verlag. стр. 7–11.
  56. ^ Розен 2000 , с. 81
  57. ^ Кон 1962 , с. 104
  58. ^ Розен 2000 , с. 91
  59. ^ Шредер 2005 , с. 23
  60. ^ Розен 2000 , стр. 90–93.
  61. ^ Перейти обратно: а б Коши, Т. (2002). Элементарная теория чисел с приложениями . Берлингтон, Массачусетс: Harcourt/Academic Press. стр. 167–169. ISBN  0-12-421171-2 .
  62. ^ Бах, Э .; Шалит, Дж. (1996). Алгоритмическая теория чисел . Кембридж, Массачусетс: MIT Press. стр. 100-1 70–73. ISBN  0-262-02405-5 .
  63. ^ Старк 1978 , стр. 26–36.
  64. ^ Перейти обратно: а б Руда 1948 , с. 44
  65. ^ Старк 1978 , стр. 281–292.
  66. ^ Розен 2000 , стр. 119–125.
  67. ^ Шредер 2005 , стр. 106–107.
  68. ^ Шредер 2005 , стр. 108–109.
  69. ^ Розен 2000 , стр. 120–121.
  70. ^ Старк 1978 , с. 47
  71. ^ Шредер 2005 , стр. 107–109.
  72. ^ Стиллвелл 1997 , стр. 186–187.
  73. ^ Шредер 2005 , с. 134
  74. ^ Луна, ТК (2005). Кодирование с коррекцией ошибок: математические методы и алгоритмы . Джон Уайли и сыновья. п. 266. ИСБН  0-471-64800-0 .
  75. ^ Розен 2000 , стр. 143–170.
  76. ^ Шредер 2005 , стр. 194–195.
  77. ^ Грэм, Р .; Кнут, Делавэр ; Паташник, О. (1989). Конкретная математика . Аддисон-Уэсли. п. 123.
  78. ^ Виноградов, И. М. (1954). Элементы теории чисел . Нью-Йорк: Дувр. стр. 3–13 .
  79. ^ Крэндалл и Померанс 2001 , стр. 225–349.
  80. ^ Кнут 1997 , стр. 369–371.
  81. ^ Шор, П.В. (1997). «Алгоритмы полиномиального времени для простой факторизации и дискретных логарифмов на квантовом компьютере». Журнал SIAM по научным и статистическим вычислениям . 26 (5): 1484–1509. arXiv : Quant-ph/9508027 . Бибкод : 1995quant.ph..8027S . дои : 10.1137/s0097539795293172 . S2CID   2337707 .
  82. ^ Диксон, доктор медицинских наук (1981). «Асимптотически быстрая факторизация целых чисел» . Математика. Вычислить . 36 (153): 255–260. дои : 10.2307/2007743 . JSTOR   2007743 .
  83. ^ Ленстра, HW младший (1987). «Факторизация целых чисел с помощью эллиптических кривых». Анналы математики . 126 (3): 649–673. дои : 10.2307/1971363 . HDL : 1887/2140 . JSTOR   1971363 .
  84. ^ Кнут 1997 , стр. 380–384.
  85. ^ Кнут 1997 , стр. 339–364.
  86. ^ Рейно, А.-А.-Л. (1811). Трактат по арифметике для студентов, желающих поступить в Политехническую школу (6-е изд.). Париж: Курьер. Примечание 60, с. 34. Цитируется Шаллитом (1994) .
  87. ^ Финк, П.-Ж.-Э. (1841). Элементарный трактат по арифметике для кандидатов в специальные школы (на французском языке). Дериво.
  88. ^ Перейти обратно: а б Шалит 1994 .
  89. ^ Ламе, Г. (1844). «Обратите внимание на ограничение количества делений при поиске наибольшего общего делителя между двумя целыми числами». Comptes Rendus de l’Académie des Sciences (на французском языке). 19 : 867–870.
  90. ^ Гроссман, Х. (1924). «О количестве делений при нахождении НОД». Американский математический ежемесячник . 31 (9): 443. дои : 10.2307/2298146 . JSTOR   2298146 .
  91. ^ Хонсбергер, Р. (1976). Математические жемчужины II . Математическая ассоциация Америки . стр. 100-1 54–57. ISBN  0-88385-302-7 .
  92. ^ Перейти обратно: а б Кнут 1997 , стр. 257–261.
  93. ^ Перейти обратно: а б с Crandall & Pomerance 2001 , стр. 77–79, 81–85, 425–431.
  94. ^ Перейти обратно: а б Мёллер, Н. (2008). «Об алгоритме Шёнхаге и вычислении субквадратичных целых НОД» (PDF) . Математика вычислений . 77 (261): 589–607. Бибкод : 2008MaCom..77..589M . дои : 10.1090/S0025-5718-07-02017-0 .
  95. ^ Перейти обратно: а б с Кнут 1997 , с. 344
  96. ^ Руда 1948 , с. 45
  97. ^ Перейти обратно: а б Кнут 1997 , с. 343
  98. ^ Моллин 2008 , с. 21
  99. ^ ЛеВек 1996 , с. 35
  100. ^ Моллин 2008 , стр. 21–22
  101. ^ Кнут 1997 , с. 353
  102. ^ Кнут 1997 , с. 357
  103. ^ Тонков, Т. (1974). «О средней длине конечных цепных дробей» . Акта Арифметика . 26 : 47–57. дои : 10.4064/aa-26-1-47-57 .
  104. ^ Кнут, Дональд Э. (1976). «Оценка постоянной Портера» . Компьютеры и математика с приложениями . 2 (2): 137–139. дои : 10.1016/0898-1221(76)90025-0 .
  105. ^ Портер, JW (1975). «К теореме Гейльбронна». Математика . 22 : 20–28. дои : 10.1112/S0025579300004459 .
  106. ^ Кнут, DE (1976). «Оценка постоянной Портера» . Компьютеры и математика с приложениями . 2 (2): 137–139. дои : 10.1016/0898-1221(76)90025-0 .
  107. ^ Диксон, доктор юридических наук (1970). «Число шагов в алгоритме Евклида» . Дж. Теория чисел . 2 (4): 414–422. Бибкод : 1970JNT.....2..414D . дои : 10.1016/0022-314X(70)90044-2 .
  108. ^ Хайльбронн, штат Джорджия (1969). «О средней длине класса конечных цепных дробей». В Поле Туране (ред.). Теория чисел и анализ . Нью-Йорк: Пленум. стр. 87–96. LCCN   76016027 .
  109. ^ Кнут 1997 , с. 354
  110. ^ Перейти обратно: а б Нортон, GH (1990). «Об асимптотическом анализе алгоритма Евклида» . Журнал символических вычислений . 10 : 53–58. дои : 10.1016/S0747-7171(08)80036-3 .
  111. ^ Кнут 1997 , с. 355
  112. ^ Кнут 1997 , с. 356
  113. ^ Кнут 1997 , с. 352
  114. ^ Вагон, С. (1999). Математика в действии Нью-Йорк: Springer-Publishing. стр. 100-1 335–336. ISBN  0-387-98252-3 .
  115. ^ Коэн 1993 , с. 14
  116. ^ Коэн 1993 , стр. 14–15, 17–18.
  117. ^ Соренсон, Джонатан П. (2004). «Анализ обобщенного бинарного алгоритма НОД». Высокие премьеры и проступки: лекции в честь 60-летия Хью Коуи Уильямса . Связь Института Филдса. Том. 41. Провиденс, Род-Айленд: Американское математическое общество. стр. 327–340. ISBN  9780821887592 . МР   2076257 . Алгоритмы, которые сегодня наиболее часто используются на практике [для вычисления наибольших общих делителей], вероятно, представляют собой двоичный алгоритм и алгоритм Евклида для меньших чисел, а также либо алгоритм Лемера, либо версию Лебилана k -арного алгоритма НОД для больших чисел.
  118. ^ Кнут 1997 , стр. 321–323.
  119. ^ Штейн, Дж. (1967). «Вычислительные проблемы, связанные с алгеброй Рака». Журнал вычислительной физики . 1 (3): 397–405. Бибкод : 1967JCoPh...1..397S . дои : 10.1016/0021-9991(67)90047-2 .
  120. ^ Кнут 1997 , с. 328
  121. ^ Лемер, Д.Х. (1938). «Алгоритм Евклида для больших чисел». Американский математический ежемесячник . 45 (4): 227–233. дои : 10.2307/2302607 . JSTOR   2302607 .
  122. ^ Соренсон, Дж. (1994). «Два быстрых алгоритма НОД». Дж. Алгоритмы . 16 : 110–144. дои : 10.1006/jagm.1994.1006 .
  123. ^ Вебер, К. (1995). «Ускоренный алгоритм НОД» . АКМ Транс. Математика. Программное обеспечение . 21 : 111–122. дои : 10.1145/200979.201042 . S2CID   14934919 .
  124. ^ Ахо, А .; Хопкрофт, Дж .; Ульман, Дж. (1974). Проектирование и анализ компьютерных алгоритмов . Нью-Йорк: Аддисон-Уэсли. стр. 300–310 . ISBN  0-201-00029-6 .
  125. ^ Шенхаге, А. (1971). «Быстрое вычисление разложения непрерывных дробей». Acta Informatica (на немецком языке). 1 (2): 139–144. дои : 10.1007/BF00289520 . S2CID   34561609 .
  126. ^ Чезари, Г. (1998). «Параллельная реализация целочисленного алгоритма НОД Шёнхаге». В Г. Бюлере (ред.). Алгоритмическая теория чисел: Учеб. ANTS-III, Портленд, Орегон . Конспекты лекций по информатике. Том. 1423. Нью-Йорк: Springer-Publishers. стр. 100-1 64–76.
  127. ^ Стеле, Д.; Циммерманн, П. (2005). « Еще раз о методе точных таблиц Гала ». Материалы 17-го симпозиума IEEE по компьютерной арифметике (ARITH-17) . Лос-Аламитос, Калифорния: Издательство IEEE Computer Society Press .
  128. ^ Перейти обратно: а б с Ланг, С. (1984). Алгебра (2-е изд.). Менло-Парк, Калифорния: Аддисон-Уэсли. стр. 100-1 190–194. ISBN  0-201-05487-6 .
  129. ^ Перейти обратно: а б Вайнбергер, П. (1973). «О евклидовых кольцах целых алгебраических чисел». Учеб. Симпозиумы. Чистая математика . Труды симпозиумов по чистой математике. 24 : 321–332. дои : 10.1090/pspum/024/0337902 . ISBN  9780821814246 .
  130. ^ Перейти обратно: а б с Стиллвелл, 2003 , стр. 151–152.
  131. ^ Бойер, CB; Мерцбах, Калифорнийский университет (1991). История математики (2-е изд.). Нью-Йорк: Уайли. стр. 100-1 116–117 . ISBN  0-471-54397-7 .
  132. ^ Каджори, Ф (1894). История математики . Нью-Йорк: Макмиллан. п. 70 . ISBN  0-486-43874-0 .
  133. ^ Жу, Антуан (2009). Алгоритмический криптоанализ . ЦРК Пресс. п. 33. ISBN  9781420070033 .
  134. ^ Фукс, Д.Б.; Табачников, Серж (2007). Математический омнибус: тридцать лекций по классической математике . Американское математическое общество. п. 13. ISBN  9780821843161 .
  135. ^ Дорогая, Дэвид (2004). «Константа Хинчина». Универсальная книга по математике: от абракадабры до парадоксов Зенона . Джон Уайли и сыновья. п. 175. ИСБН  9780471667001 .
  136. ^ Уильямс, Колин П. (2010). Исследования в области квантовых вычислений . Спрингер. стр. 277–278. ISBN  9781846288876 .
  137. ^ Кокс, Литтл и О'Ши 1997 , стр. 37–46.
  138. ^ Шредер 2005 , стр. 254–259.
  139. ^ Граттан-Гиннесс, Айвор (1990). Свертки во французской математике, 1800-1840: от исчисления и механики к математическому анализу и математической физике. Том II: Повороты . Научные сети: исторические исследования. Том. 3. Базель, Бостон, Берлин: Биркхойзер. п. 1148. ИСБН  9783764322380 . Нашей темой здесь является «последовательность Штурма» функций, определенных из функции и ее производной с помощью алгоритма Евклида, чтобы вычислить количество действительных корней многочлена в пределах заданного интервала.
  140. ^ Хайрер, Эрнст; Норсетт, Сиверт П.; Ваннер, Герхард (1993). «Критерий Рауса – Гурвица». Решение обыкновенных дифференциальных уравнений I: Нежесткие задачи . Ряд Спрингера по вычислительной математике. Том. 8 (2-е изд.). Спрингер. стр. 81 и далее. ISBN  9783540566700 .
  141. ^ Перейти обратно: а б с Стиллвелл, 2003 , стр. 101–116.
  142. ^ Перейти обратно: а б с Хенсли, Дуг (2006). Продолжительные дроби . Всемирная научная. п. 26. ISBN  9789812564771 .
  143. ^ Дедекинд, Ричард (1996). Теория алгебраических целых чисел . Кембриджская математическая библиотека. Издательство Кембриджского университета. стр. 22–24. ISBN  9780521565189 .
  144. ^ Джонстон, Бернард Л.; Ричман, Фред (1997). Числа и симметрия: введение в алгебру . ЦРК Пресс. п. 44. ИСБН  9780849303012 .
  145. ^ Адамс, Уильям В.; Гольдштейн, Ларри Джоэл (1976). Введение в теорию чисел . Прентис-Холл. Упражнение 24, с. 205. ИСБН  9780134912820 . Сформулируйте и докажите аналог китайской теоремы об остатках для целых гауссовских чисел.
  146. ^ Старк 1978 , с. 290
  147. ^ Кон 1962 , стр. 104–105.
  148. ^ Лауритцен, Нильс (2003). Конкретная абстрактная алгебра: от чисел к базисам Грёбнера . Издательство Кембриджского университета. п. 130. ИСБН  9780521534109 .
  149. ^ Лауритцен (2003) , с. 132
  150. ^ Лауритцен (2003) , с. 161
  151. ^ Перейти обратно: а б Шарп, Дэвид (1987). Кольца и факторизация . Издательство Кембриджского университета. п. 55 . ISBN  9780521337182 .
  152. ^ Шарп (1987) , с. 52
  153. ^ Лауритцен (2003) , с. 131
  154. ^ Ламе, Г. (1847). «Память о разрешении в комплексных числах уравнения А н + Б н + С н = 0». J. Math. Pures Appl. (на французском языке). 12 : 172–184.
  155. ^ Эдвардс, Х. (2000). Последняя теорема Ферма: генетическое введение в теорию алгебраических чисел . Спрингер. п. 76.
  156. ^ Кон 1962 , стр. 104–110.
  157. ^ ЛеВек, WJ (2002) [1956]. Темы теории чисел, тома I и II . Нью-Йорк: Dover Publications. стр. II: 57, 81. ISBN.  978-0-486-42539-9 . Збл   1009.11001 .
  158. ^ Перейти обратно: а б Кларк, Д.А. (1994). «Квадратичное поле, которое является евклидовым, но не нормо-евклидовым» . Манускрипта Математика . 83 : 327–330. дои : 10.1007/BF02567617 . S2CID   895185 . Збл   0817.11047 .
  159. ^ Перейти обратно: а б с Буэсо, Гомес-Торресильяс и Вершорен (2003) ; см. стр. 37-38 о некоммутативных расширениях алгоритма Евклида и следствии 4.35, с. 40, где приведены дополнительные примеры некоммутативных колец, к которым они применимы.
  160. ^ Перейти обратно: а б Давидофф, Джулиана ; Сарнак, Питер; Валетт, Ален (2003). «2.6 Арифметика целых кватернионов» . Элементарная теория чисел, теория групп и графы Рамануджана . Тексты студентов Лондонского математического общества. Том. 55. Издательство Кембриджского университета. стр. 59–70. ISBN  9780521531436 .
  161. ^ Рибенбойм, Пауло (2001). Классическая теория алгебраических чисел . Университеттекст. Спрингер-Верлаг. п. 104. ИСБН  9780387950709 .

Библиография [ править ]

Внешние ссылки [ править ]