Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Алгоритмы нахождения НОД и мультипликативного обратного по модулю.




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

Алгоритм А. (Алгоритм Евклида в современной редакции). По данным неотрицательным целым числам u и v этот алгоритм находит их наибольший общий делитель.

A1. [ v = 0?] Если v = 0, то выполнение алгоритма заканчивается, а в качестве результата возвращается число u.

A2. [Взять u mod v. ] Присвоить r u mod v, u v, v r и вернуться к шагу A1. (В результате выполняемых на этом шаге операций значение v уменьшается, значение НОД(u, v) остается неизменным.)

Бинарный алгоритм НОД.

Алгоритм B. (Бинарный алгоритм нахождения наибольшего общего делителя). По данным неотрицательным целым числам u и v этот алгоритм находит их наибольший общий делитель. (Использует знаковое представление чисел).

B1. [Найти степень 2.] Присвоить k 0, затем повторно присваивать kk + 1, u u / 2, v v / 2 нуль или более раз до тех пор, пока одно или оба числа u и v станут нечетными.

B2. [Начальная установка.] (Исходные значения чисел u и v уже разделены на 2 k, и по крайней мере одно из текущих значений нечетно.) Если нечетно u, то присвоить t - v и перейти к шагу B4. В противном случае присвоить tu.

B3. [Уменьшить t наполовину.] (Здесь t четно и не нуль.) Присвоить tt / 2.

B4. [ t четно?] Если t четно, то вернуться к шагу B3.

В5. [Установить max(u, v) заново.] Если t > 0, то присвоить u t, в противном случае присвоить v - t. (Большее из чисел u и v заменяется на | t | за исключением, возможно, первого выполнения этого шага.)

B6. [Вычесть.] Присвоить t uv. Если t ¹ 0, то вернуться к шагу B3. В противном случае алгоритм останавливает выполнение, а на выходе будет u · 2 k.

Рис.33. Бинарный алгоритм НОД.

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

Алгоритм X. (Обобщенный алгоритм Евклида). Для заданных целых чисел u и v этот алгоритм определяет вектор (u 1, u 2, u 3), такой, что uu 1 + vu 2 = u 3 = НОД(u, v). В процессе вычисления используются вспомогательные векторы (v 1, v 2, v 3), (t 1, t 2, t 3); действия производятся таким образом, что в течение всего процесса вычисления выполняются соотношения

ut 1 + vt 2 = t 3 uu 1 + vu 2 = u 3 uv 1 + vv 2 = v 3.

X1. [Начальная установка.] Присвоить (u 1, u 2, u 3) (1, 0, u), (v 1, v 2, v 3) (0, 1, v).

X2. [v3 = 0?] Если v3 = 0, то выполнение алгоритма заканчивается.

X3. [Разделить и вычесть.] Присвоить , затем присвоить

(t 1, t 2, t 3) (u 1, u 2, u 3) – (v 1, v 2, v 3) · q,

(u 1, u 2, u 3) (v 1, v 2, v 3),

(v 1, v 2, v 3) (t 1, t 2, t 3).

Возвратиться к шагу X2.

Расширенный бинарный алгоритм НОД.

Алгоритм Y. Модификация алгоритма X с использованием принципов алгоритма B. Для заданных целых чисел u и v этот алгоритм определяет вектор (u 1, u 2, u 3), такой, что uu 1 + vu 2 = u 3 = НОД(u, v). В процессе вычисления используются вспомогательные векторы (v 1, v 2, v 3), (t 1, t 2, t 3); в течение всего процесса вычисления так же, как и в X выполняются соотношения

ut 1 + vt 2 = t 3 uu 1 + vu 2 = u 3 uv 1 + vv 2 = v 3.

(Использует знаковое представление чисел).

Y1. [Найти степень 2.] То же, что в шаге B1.

Y2. [Начальная установка.] Присвоить (u 1, u 2, u 3) (1, 0, u), (v 1, v 2, v 3) (v, 1 – u, v). Если число u нечетно, присвоить (t 1, t 2, t 3) (0, –1, – v) и прейти к шагу Y4. В противном случае присвоить (t 1, t 2, t 3) (1, 0, u).

Y3. [Выполнить половинное деление t 3.] Если t 1 и t 2 четны, присвоить (t 1, t 2, t 3) (t 1, t 2, t 3)/2; иначе присвоить (t 1, t 2, t 3) (t 1 + v, t 2u, t 3)/2. (В последнем случае t1 + v и t2 – u будут оба четными.)

Y4. [ t 3 четно?] Если t 3 четно, вернуться к шагу Y3.

Y5. [Переустановить max(u 3 v 3).] Если t 3 положительно, присвоить (u 1, u 2, u 3) (t 1, t 2, t 3); иначе присвоить (v 1, v 2, v 3) (vt 1, – u – t 2, – t 3).

Y6. [Вычесть.] Присвоить (t 1, t 2, t 3) (u 1, u 2, u 3) – (v 1, v 2, v 3). Затем, если t 1 £ 0, присвоить (t 1, t 2) (t 1+ v –, t 2 u). Если t3 ¹ 0, вернуться к шагу Y3. В противном случае закончить выполнение алгоритма с результатом, равным (u 1, u 2, u 3 · 2 k).

 

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

Для двух cравнений.

Система cравнений

 

 

при НОД(m, n) = 1 имеет единственное решение по модулю m · n, которое определяется по формулам:

 

 

Пример.

T = 7-1(mod 5) = 2-1 (mod 5) = 3 (mod 5),

u = (3 – 4) · 3 (mod 5) = 4 · 3 (mod 5) = 2 (mod 5),

x (mod 35) = 4 + 2 · 7 = 18.

Общий случай КТО.

Пусть m 1,..., mr и a 1,..., ar – целые числа, причем все mi попарно взаимно просты.

Нужно найти такой x по модулю M = m 1· m 2·...· mr, что

x = ai (mod mi) для всех i.

Решение единственно и равно:

где .

Пример.

M 1 = 143, y 1 = 5,

M 2 = 91, y 2 = 4,

M 3 = 77, y 3 = 12.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...