Jump to content

Алгоритм НОД Лемера

Алгоритм НОД Лемера , названный в честь Деррика Генри Лемера , представляет собой быстрый НОД алгоритм , усовершенствованный вариант более простого, но более медленного алгоритма Евклида . В основном он используется для больших целых чисел, которые представляются в виде строки цифр относительно некоторой выбранной системы счисления , например β = 1000 или β = 2. 32 .

Алгоритм

[ редактировать ]

Лемер отметил, что большинство частных на каждом шаге деления стандартного алгоритма невелики. (Например, Кнут заметил, что коэффициенты 1, 2 и 3 составляют 67,7% всех частных. [ 1 ] ) Эти маленькие частные можно определить всего по нескольким ведущим цифрам. Таким образом, алгоритм начинается с разделения первых цифр и вычисления последовательности частных, если она правильна.

Скажем, мы хотим получить НОД двух целых чисел a и b . Пусть а b .

  • Если b содержит только одну цифру (в выбранной системе счисления , скажем, β = 1000 или β = 2 32 ), используйте какой-либо другой метод, например алгоритм Евклида , для получения результата.
  • Если a и b различаются по длине цифр, выполните деление так, чтобы a и b были равны по длине, причем длина равна m .
  • Внешний цикл: повторяйте до тех пор, пока один из a или b не станет нулевым:
    • Уменьшите m на единицу. Пусть x — первая (наиболее значимая) цифра в a , x = a div β м и y - старшая цифра в b , y = b div β м .
    • 2 на 3 Инициализируйте матрицу
    к расширенной единичной матрице
    и выполнить алгоритм Евклида одновременно на парах ( x + A , y + C ) и ( x + B , y + D ), пока отношения не станут разными. То есть выполните итерацию как внутренний цикл :
    • Вычислите частные w 1 деления ( x + A ) на ( y + C ) и w 2 ( x + B ) на ( y + D ) соответственно. Также пусть w будет (не вычисленным) частным из текущего длинного деления в цепочке длинных делений алгоритма Евклида.
      • Если w 1 w 2 , то выходим из внутренней итерации. В противном случае установите w для значение w 1 (или w 2 ).
      • Заменить текущую матрицу
      с матричным произведением
      согласно матричной формулировке расширенного алгоритма Евклида.
      • Если B ≠ 0, перейти к началу внутреннего цикла.
    • Если B = 0, мы зашли в тупик ; выполните обычный шаг алгоритма Евклида с помощью a и b и перезапустите внешний цикл.
    • Установите a на aA + bB и b на Ca + Db (снова одновременно). При этом шаги алгоритма Евклида, которые были выполнены с ведущими цифрами в сжатой форме, применяются к длинным целым числам a и b . Если b ≠ 0, перейдите к началу внешнего цикла.
  1. ^ Кнут , Искусство компьютерного программирования, том 2 «Получисловые алгоритмы» , глава 4.5.3. Теорема E.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 51733363919556bf259b2c108aea02d5__1578755940
URL1:https://arc.ask3.ru/arc/aa/51/d5/51733363919556bf259b2c108aea02d5.html
Заголовок, (Title) документа по адресу, URL1:
Lehmer's GCD algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)