Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Вычисление наибольшего общего делителя

Читайте также:
  1. А) за курс начального общего образования
  2. Алгебраические дополнения. Миноры. Формулы разложения определителя по столбцу или строке
  3. В) Вычисление интервала корреляции;
  4. Введение Перестройка — часть общего кризиса индустриализма
  5. Векторное произведение двух векторов. Условие коллинеарности векторов. Вычисление площади параллелограмма и треугольника.
  6. Вероятные следствия действия естественного отбора путем дивергенции признак; и вымирания потомков одного общего предка
  7. Выборка с группированием данных и вычислением функций агрегации

Наибольшим общим делителем (НОД) двух чисел u и v называется такое наибольшее целое число НОД(u, v), которое делит оба числа u и v.

Прямой метод нахождениянаибольшего общего делителя (НОД) состоит в разложении чисел u и v на простые множители и выборе среди них всех общих множителей. Эта задача является сложной, поскольку требует для своего выполнения числа операций, экспоненциально зависящего от числа разрядов чисел u и v. Однако существует быстрый метод вычисления НОД. Он основан на алгоритме Евклида и состоит в следующем. Пусть, не умаляя общности, u > v > 0. Тогда производятся вычисления

 

u = a 1 v + b 1   b 1 = res v u 0 £ b 1< v
v = a 2 b 1 + b 2   b 2 = v 0 £ b 2< b 1
b 1 = a 3 b 2 + b 3   b 3 = b 1 0 £ b 3 < b 2
bk – 2 … = ak bk – 1+ bk   bk … = bk – 2 … 0 £ bk < bk – 1

 

до тех пор, пока не будет получено, что bk = 0 или bk = 1. Если bk = 1, то НОД(u, v) = 1, т.е. u и v взаимно простые числа. Иначе, когда bk = 0, имеем НОД(u, v) = bk – 1, т.е. bk – 1 и дает решение задачи. Сложность данного алгоритма полиномиально зависит от числа разрядов u и v и требует 0 (log v) делений.

 

Обращение элементов по модулю n

Элемент a обратный к элементу a по модулю n (записывается a = a –1 mod n) – это такое целое число a, которое удовлетворяет уравнению

a a = 1 mod n.

Для целых чисел a и n решение данной задачи (называемой решением сравнения) существует не всегда, а только при условии, что НОД чисел a и n равен единице. В частности, обратный элемент a существует всегда, когда a строго меньше n и само n простое число.

В тех случаях, когда обратный элемент существует, его нахождение является простой задачей. Решается она с помощью алгоритма Евклида. Действительно, если проанализировать алгоритм Евклида, можно видеть, что он дает возможность не только вычислить НОД чисел a и n, но и представить его в следующей форме:

 

НОД(a, n) = x a + y n,

 

где x и y – целые (не обязательно положительные) числа. Поскольку предполагается, что обратный элемент существует, должно быть выполнено условие НОД(a, n) = 1, или

 

x a + y n =1mod n.

 

Но y n =0mod n, поскольку произведение y n кратно n. В силу этого

 

a –1 = x mod n.


Дата добавления: 2015-10-26; просмотров: 113 | Нарушение авторских прав


Читайте в этой же книге: Расстояние единственности | Вычислительно стойкие криптосистемы | Блоковые и потоковые шифры | Маскираторы аналоговых сообщений | Симметричные блоковые шифры | Многократное шифрование блоков | Модифицированные алгоритмы блоковых шифров | Государственный стандарт шифрования Российской Федерации | Аддитивные потоковые шифры | Применение линейных рекуррентных регистров для потокового шифрования |
<== предыдущая страница | следующая страница ==>
Особенности асимметричных криптосистем| Основы построения асимметричных систем

mybiblioteka.su - 2015-2024 год. (0.006 сек.)