Алгоритм Евклида
Дана пара целых чисел (m,n). Считаем n остатком с номером 1. Первый шаг алгоритма Евклида – делим m на n с остатком, а далее делим остаток на вновь получившийся остаток покуда этот вновь получившийся остаток не станет равным 0. Этот момент обязательно наступит, так как модули остатков строго убывают. Более точно: обозначим и образуем последовательность делений с остатком:
Для чего предназначен этот алгоритм? Например, для вычисления наибольшего общего делителя пары чисел m и n. Обозначим через НОД(m,n) – наибольшее натуральное число, делящее как m так и и n. Дополнительно, по определению полагаем НОД(0,0)=0.
Если то , т.е. согласно первой строке алгоритма. Но тогда d делит и и т.д. вплоть до . Эту цепочку импликаций можно обратить: если , то d делит , а затем делит и т.д. вплоть до n и m. Доказано, что
-- последний ненулевой остаток в алгоритме Евклида. Попробуем на практике, взяв m=900 и n=1155
Итог: НОД(900,1155)=15. Мы могли бы уменьшить числа, пользуясь правилом
Тогда НОД(900,1155)=5⋅ НОД(180,231)=15⋅ НОД(60,77). Но далее, применяя алгоритм Евклида, мы записали бы опять шесть строк и пришли к выводу, что НОД(60,77)=1. Числа m и n, наибольший общий делитель которых равен 1, называются взаимно простыми (обозначение m⊥ n). Оказывается число d=НОД(m,n) можно записать в виде линейной комбинации своих аргументов:
Это важное соотношение позволяет доказать известное правило для простых чисел p:
из которого в свою очередь вытекает единственность разложения на простые множители. Однако, все по порядку: докажем сначала (2). Проходим еще раз по строкам алгоритма Евклида сверху в низ: -- выражается в виде линейной комбинации, тогда и
также выражается через m и n в виде линейной комбинации. Дойдя до последней строки, видим, что и выражается через m и n в виде линейной комбинации. Заметим, что если выполняется соотношение (2), то |d | заведомо есть НОД чисел m и n. Для чисел получаем:
Докажем теперь правило (3). Пусть , т.е. для некоторого k. Если , то все доказано. Иначе p⊥ k, ибо p простой элемент. Пользуясь (1), найдем элементы s,t такие, что 1=ps+at. Тогда
откуда .
Предположим теперь, что
-- два разложения в произведение простых элементов: простые и -- попарно различны. Доказательство ведем индукцией по числу . База индукции – случай s=t=1, очевиден. Так как делит произведение , то делит один из сомножителей . Но этот сомножитель также есть простой элемент и поэтому .
Сокращая левую и правую часть соотношения (4) на , получаем аналогичное равенство, но с меньшим числом сомножителей. Продолжая этот процесс, дойдем до равенства и, в частности, до равенства s=t. Этим и завершается доказательство основной теоремы арифметики.
Придадим матричную трактовку алгоритму Евклида (о матрицах см. следующий параграф). Перепишем последовательность делений с остатком в матричном виде:
Подставляя в каждое последующее равенство вместо столбца в левой части левую часть предыдущего равенства, получим:
Заметим, что слева стоят матрицы с определителем -1, поэтому их произведение, обозначим его , имеет определитель и, значит, оно обратимо в кольце целочисленных 2х2-матриц. Доказана
ТЕОРЕМА. Для любой пары целых чисел с найдется обратимая 2х2-матрица над ℤ такая, что
.
В частности, найдутся числа такие, что .
В нашем численном примере
Вторую строку матрицы Q можно найти с помощью НОК(m,n) – наименьшего общего кратного чисел m и n, т.е. наименьшего натурального числа, кратного как m так и n. Оно связано с НОД соотношением
и в нашем числовом примере равно НОК(900,1155)=900⋅ 1155/15=69300. Тогда 69300=900⋅77=1155⋅ 60 и поэтому -77⋅ 900+60⋅ 1155=0. Вот отсюда и берется вторая строка (-77, 60). Почему определитель матрицы Q, полученной таким образом, будет заведомо ± 1 (мы его сделали +1, за счет корректировки знаков второй строки)? Ответ в упр. ___
Построим алгоритм, позволяющий вычислить матрицу Q (см. файл Алгоритм Евклида.xlsm). Основная идея алгоритма заключается в том, что по мере продвижения по строкам алгоритма Евклида, мы сначала от единичной матрицы переходим к матрице , затем к матрице и т.д., пока не дойдем до итоговой матрицы .
Sub Matrix2() Dim m As Integer Dim n As Integer Dim a As Integer Dim b As Integer Dim s As Integer Dim r As Integer
Dim Q(1 To 2, 1 To 2) As Integer ‘ Задание целочисленной 2×2-матрицы m = Cells(4, 2): n = Cells(5, 2)
For i = 1 To 2 ' В начале Q инициализируем единичной матрицей For j = 1 To 2 If i = j Then Q(i, j) = 1 Else Q(i, j) = 0 Next Next
Do Until n = 0 s = m \ n: r = m - n * s a = Q(1, 1): b = Q(1, 2): Q(1, 1) = Q(2, 1): Q(1, 2) = Q(2, 2) Q(2, 1) = a - s * Q(2, 1): Q(2, 2) = b - s * Q(2, 2) m = n: n = r Loop Cells(7, 3) = m: Cells(8, 3) = Abs(Q(2, 1) * Cells(4, 2)) Cells(12, 1) = Q(1, 1): Cells(12, 2) = Q(1, 2) Cells(13, 1) = Q(2, 1): Cells(13, 2) = Q(2, 2) Cells(12, 4) = "НОД": Cells(12, 5) = m
End Sub
- Спасское Городище 2012
- Введение
- Список обозначений и терминов
- Немного о бейсиКе
- Делимость целых чисел
- Алгоритм Евклида
- Матричная алгебра
- Определители
- Обратная матрица
- Компьютерная реализация матричной алгебры
- Линейные преобразования плоскости
- Комплексные числа
- Конструкция поля комплексных чисел.
- Сопряжение комплексных чисел
- Тригонометрическая форма записи комплексных чисел
- Комплексная экспонента
- Решение квадратных уравнений.
- Основная теорема алгебры комплексных чисел
- Алгебраические системы
- Операции и отношения на множестве
- Моноиды
- Поля и тела
- Подсистемы алгебраических систем
- Декартово произведение алгебраических систем
- Фактор системы
- Изоморфизм алгебраических систем
- Абелевы группы
- Группа подстановок
- Алгебра многочленов
- Немного комбинаторики
- Биномиальные коэффициенты
- Числа Фибоначчи
- Рациональные числа
- Дерево Штерна-Брокко
- Алгебра высказываний
- Дизъюнктивная совершенная нормальная форма.
- Конъюнктивная нормальная совершенная форма
- Многочлены Жегалкина
- Алгебра кватернионов.
- Литература