Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВОПРОСЫ ГОСУДАРСТВЕННОГО ЭКЗАМЕНА.docx
Скачиваний:
320
Добавлен:
12.04.2015
Размер:
5.76 Mб
Скачать

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

Вычисление НОД.

Число а называется общим делителем чисел b1, b2,…, bn, если оно является делителем каждого из чисел b1, b2,…, bn.

Наибольшим общим делителем целых чисел a1,…,an , называется такой их общий делитель, который делится на любой общий делитель этих чисел: обозначается НОД (a1,…,an).

Каноническое разложение

Если a=и b= суть канонического разложения целых положительных чисел a и b, то d=НОД(a,b), где d=

Простой способ

a= 24 b=6

24-6=18

18-6=12

12-6=6 < НОД

6-6=0

Теорема Евклида.

Теорема Евклида

Пусть a и b – два целых числа, b ≠ 0 и a = bq + r (0 ≤ r < |b|). Тогда НОД (a,b) = НОД (b,r).

Алгоритм Евклида, сравнение алгоритмов.

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

Сущность алгоритма Евклида состоит в том, что в силу теоремы Евклида задача нахождения НОД (a,b) сводится к более простой задаче нахождения НОД (b,r), 0 ≤ r < |b|. Если r = 0, то НОД (a,b) = b. Если же r ≠ 0, то получаем цепочку неравенств

a = bq0 + r1, 0 ≤ r < |b|,

b = r1q1 + r2, 0 ≤ r2 < r1,

……………………

rn-2 rn-1qn-1 + rn, 0≤ rn < rn-1,

rn-1 = rnqn + rn+1.

Приходим к выводу: если к целым числам a,b, где b ≠ 0, применить алгоритм Евклида, то последний ненулевой остаток в этом алгоритме и есть НОД (a,b).

Пример: a=86, b=32

a = b*q + p1

86 = 32*2 + 22

32 = 22*1 + 10

22 = 10*2 +2

10 = 2*5 + 0

Ответ: НОД (86, 32) = 2

Сравнение алгоритмов

Сравним «простой» алгоритм и алгоритм Евклида. Для малых чисел ни один из них не дает преимущества в вычислениях, но для больших параметров эффективней применять алгоритм Евклида.

Соотношение Безу.

(Целые числа называют взаимно простыми, если любой их общий делитель равен +1 или -1.)

Теорема. Если целые числа a и b взаимно простые, то существуют целые числа u и v такие, что au+bv=1.

Доказательство. Рассмотрим множество I = {ax + by | x,y ϵ Z}. a ϵ I, так как a = a*1 + b*0, и b ϵ I, так как b = a*0 + b*1. Обозначим через d наименьшее положительное натуральное число, принадлежащее множеству I. Так как d ϵ I, то, согласно определению множества I, существуют целые числа u и v такие, что au+bv=d; a, b ϵ I, значит, dобщий делитель чисел a, b. Но a, bвзаимно простые, d > 0, значит, d = 1 и au+bv = 1.

Пример. Пусть a = 5 и b = 7, тогда u = -4 и v = 3, т.е. 5*(-4) + 7*3 = 1.

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

Алгоритм, примененный к паре чисел a,b порождает последовательность такую, что

ri-1=riqi+ri+1 для 1in, где r0=a, r1=b, rn+1=0.

Из этих формул легко получается рекуррентная последовательность:

из которой теперь следует классический результат

rn=НОД(a,b)=una+vnb.

Литература: [1], [3], [5].

3. Модулярная арифметика

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

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

Пусть n1 ,n2, …, nr - попарно взаимно простые числа. Пусть а12, …, аr произвольно целые числа. Тогда система

имеет по крайней мере одно решение. Кроме того, если х' – другое решение этой системы, то хºх'(mod n1·n2··nr ).

Смешанная система счисления.

Идея, принадлежавшая Л.Гарнеру и представленная у Д.Кнута, состоит в том, чтобы связать с модулярным представлением еще одно представление, называемое смешанной системой счисления.

Основанием смешанной системы счисления называется множество из r³2 целых чисел n1,n2,…,nr, не обязательно взаимно простых. Если положим иn=n1·n2·…·nr, то имеется биекция (взаимно однозначное соответствие):

Обратное отображение определяется при помощи евклидовых делений:

x=q1n1+z1, q1= q2n2+z2, … , qr-1= qrnr+zr.

В случае, когда все числа ni равны, получаем обычную позиционную систему счисления (смешанная система счисления, следовательно, это система, в которой основания варьируется).

Формулы определения цифр.

Пусть n1,n2,…,nr – попарно взаимно простые числа. Пусть иCi – обратные к Ni по модулю ni.

Рассмотрим целое число x, модулярные компоненты которого x1,x2,…,xr тогда цифры x в системе со смешанным основанием ni обозначим через zi ; они находятся по формулам:

z1= x1mod n1,

z2= C2(x2-z1) mod n2,

z3= C3(x3-(N2z2+z2)) mod n3,

……………

zr= Cr(xr-(Nr-1zr-1+…+ N2z2+z1)) mod nr.

Чтобы осуществить обратный переход от системы со смешанным основанием к модулярному представлению, достаточно провести следующие вычисления:

x1=z1,

x2=(z1+z2n1)mod n2,

x3=(z1+z2n1+z3n1n2)mod n3,

xr=(z1+z2n1+…+zrn1n2…nr-1)mod nr.

Сравнение чисел, определение цифр в позиционной системе счисления.

Пусть имеются два целых числа x и x', заданные своими модулярными компонентами, и мы хотели узнать, которое из этих чисел (можем считать, что они оба лежат в [0,m)) больше, по возможности не вычисляя явный вид этих чисел. Вычислим сначала цифры zi и zi', соответствующие x и x' в смешанной системе счисления, определяемой модулями. В этом случае x<x' тогда и только тогда, когда наибольший вес i, на котором различаются эти числа, таков, что zi<zi'.

Определение цифр в позиционной системе счисления

Пусть целое х задано модулярными компонентами. Мы хотим вычислить его цифры в системе с основанием b. По схеме Горнера

x mod b(…((zr mod)·nr-1+ zn-1 mod b)…)·n1+z1 mod b (x-(x mod b))/b

Так мы получили первую цифру x в системе счисления с основанием b.

Алгоритм умножения двух чисел?

Литература: [1], [4], [5].