Бинарный алгоритм Евклида


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

Учтем, что (2ka,2sb)=2min(k,s)(a,b).

Алгоритм:

Вход: a, b>0.

1. Представим a и b в виде: ; , где a1, b1 – нечетные числа.

k:=min(k1,k2).

2. Если a1>b1 Шаг 4

a1< b1 Шаг 3

a1= b1 Шаг 6

3. Меняем местами a1 и b1.

4. c:=a1b1=2sc1 (c1 - нечетное число)

(Заметим, что с обязательно будет четным, а значит )

5. a1:= b1 , b1:=c1 . Возвращаемся на Шаг 1.

6. Выход: (a,b)=2ka1 .

 

Пример

a=603, b=108

 

a1
b1
c1

1. a1=603, k1=0; b=108=4∙27=22∙27 k2=2, b1=27, k=0

2. a1=603> b1=27 Ш4

4. c=603-27=56=64∙9, c1=9

5. a1=27; b1=9 Ш1

1. a1=27; b1=9

2. a1> b1 Ш4

4. c=a1b1=18=2∙9, c1=9

5. a1=9, b1=9

1. a1=9, b1=9, k=0

2. a1= b1 Ш6

6. (a,b) = 2º∙9=9

 

Для НОД справедливы следующие свойства:

 

1) (am,bm)=m(a,b)

Доказательство:

Доказательство строится, умножая почленно соотношения алгоритма Евклида на m.

2) d – общий делитель чисел a и b

(в частности, ).

Доказательство:

Учитывая, что и – целые числа, из свойства НОД №1 получаем соотношение , что и требовалось.

3) (a,b)=1 (ac,b)=(c,b)

Доказательство:

a, b, c выполняется (ac,b)\ac, (ac,b)\b (ac,b)\bc (ac,b)\(ac,bc).

По условию теоремы, в силу взаимной простоты a и b (ac,bc)=c, то есть получили (ac,b)\с.

Но (ac,b)\b (ac,b)\(c,b).

С другой стороны, (c,b)\ac, (c,b)\b. (c,b)\(ac,b).

Таким образом, числа (ac,b) и (c,b). взаимно делят друг друга (ac,b)=(c,b).

4) (a,b)=1, b\ac b\c.

Доказательство:

Из теоремы №1 о НОД в силу b\ac, (ac,b)=b.

из свойства НОД № 3 b=(c,b)и тогда из теоремы №1 о НОД b\c.

5) Если (ai, bj)=1 для , ( , )=1.

Доказательство:

имеем ( , ) = ( , ) = ( , ) = … = .

Аналогично, используя полученное соотношение,

( , ) = ( , ) = … = ( , ) = 1.



Дата добавления: 2018-11-26; просмотров: 881;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.