logo
Рожков_Ниссенбаум_ТЧМК_лекции

1.2. Наибольший общий делитель.

Далее будем рассматривать лишь положительные делители чисел.

Общим делителем чисел a1, a2,…,an называется число d: d\ai .

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

Если (a1, a2,…,an)=1, то числа a1, a2,…,an называются взаимно простыми.

Если (ai,aj)=1 ,ij , то числа a1, a2,…,an называются попарно простыми.

Утверждение

Если числа a1, a2,…,an – попарно простые, то они взаимно простые. (Очевидно.)

Теорема 1

Если b\a совокупность общих делителей a и b совпадает с совокупностью делителей b. В частности, (a,b)=b.

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

b\a a=ba1, тогда d: d\b справедливо d\a (т.е. любой делитель b является также делителем a).

Если l\a, но l не делит b, то l не является общим делителем a и b.

То есть совокупность общих делителей a и b совпадает с совокупностью делителей b. А поскольку наибольший делитель b есть b, и b\a , то (a,b)=b.

Теорема 2

Если a=bq+c, то совокупность общих делителей a и b совпадает с совокупностью общих делителей b и c.

В частности, (a,b)=(b,c)

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

Пусть m\a, m\b m\c (в силу a=bq+c и теоремы 2 п.1), а значит m – общий делитель b и c.

Пусть l\b, l\c l\a (в силу a=bq+c и теоремы 2 п.1), а значит l - общий делитель a и b.

Получили совпадение совокупности общих делителей a и b и общих делителей b и c.

Пусть теперь d=(a,b) d\a, d\b, а значит, по доказанному выше, d\c. В силу совпадения совокупностей общих делителей и того, что d – наименьший изо всех делителей a и b, не может существовать d1: d1>d, d1\b, d1\c. Поэтому d=(b,c) (a,b)= (b,c).

Алгоритм Евклида (отыскания НОД 2-х чисел)

Пусть a>b. Тогда в силу теоремы делимости находим ряд равенств:

a=bq1+r1, 0<r1<b

b=r1q2+r2, 0<r2<r1

r1=r2q3+r3, 0<r3<r2

...…………………

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

rn1=rnqn+1.

Получение последнего равенства (то есть равенства с разложением без остатка) неизбежно, т.к. ряд b, r1, r2, …. – ряд убывающих целых чисел, который не может содержать более b положительных чисел, а значит рано или поздно в этом ряду возникнет «0».

Видим, что общие делители a и b, b и r1, r1 и r2,..., rn–1 и rn совпадают с делителями числа rn (a,b)=(b,r1)=(r1,r2)=…=(rn-1,rn)= rn.

Таким образом, (a,b)=rn.

Вышеизложенная идея нахождения НОД может быть реализована в виде алгоритма. Ниже приведены несколько вариантов реализации алгоритма Евклида.

Реализация алгоритма Евклида (вариант алгоритма с вычитанием)

Вход: a, b>0.

  1. Если a>b Шаг 3

если a<b Шаг 2

если a=b Шаг 5 (выход)

  1. Меняем местами a и b.

  2. a:=ab

  3. Возвращаемся на Шаг 1.

5. Выход: a – НОД

Ниже приведен пример использования этой реализации алгоритма.

Пример

a=603, b=108

Преобразования алгоритма записаны в таблицу, верхняя строка которой содержит значение переменной a, нижняя – содержимое переменной b. Каждый столбец таблице соответствует состоянию процесса на отдельном шаге.

a

603

495

387

279

171

63

108

45

63

18

45

27

9

18

9

b

108

108

108

108

108

108

63

63

45

45

18

18

18

9

9

Ответ: НОД (603,108)=9.

Реализация алгоритма Евклида (вариант алгоритма с делением с остатком)

Вход: a, b >0.

1. Находим разложение a=bq+r, 0≤r<b

2. если r=0 Шаг 5 (выход)

3. a:=b; b:=r.

4. Возвращаемся на Шаг 1

5. Выход: b – НОД.

Пример

a=603, b=108

a

603

108

63

45

27

18

b

108

63

45

27

18

9

603=5·108+63

108=1·63+45

63=1∙45+27

45=1∙27+18

27=1∙18+9

18=2∙9+0

Ответ: НОД (603,108)=9.

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

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

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

Алгоритм:

Вход: a, b>0.

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

k:=min(k1,k2).

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

a1< b1Шаг 3

a1= b1 Шаг 6

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

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

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

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

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

Пример

a=603, b=108

a1

603

27

9

b1

27

9

9

c1

9

9

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.