Вход: Пары
, такие, что , , где каждое > 1 и ( , ) = 1 для и - короткие целые числа.Выход: х – единственное наименьшее неотрицательное решение системы по модулю
.1. Инициализация. Р:=1; х:=МОД(
, ) – подпрограмма нахождения остатка деления на .2. Цикл для i от 1 до n – 1:
MOДINV(p, );q:=МОД(
3. х:= х + pq, где MOДINV – подпрограмма вычисления мультипликативного обратного элемента.
4. q:=МОД(
5. Вернуть х.
Несложный анализ времени работы данного алгоритма показывает, что
где
- количество цифр числа Р, т. е. длина числа Р, при этом функция L ведёт себя как логарифм.Вернёмся теперь к вопросу о мультипликативных обратных элементах в фактор-кольце Zp.
Теорема. Пусть
, тогда класс имеет мультипликативный обратный элемент по модулю р тогда и только тогда, когда ( , р) = 1.Теорема. Характеристика λ конечного поля – простое число.
Рассмотрим два способа вычисления обратных мультипликативных элементов. Первый способ основан на рассмотренном выше алгоритме Евклида, второй – на теореме Эйлера.
Первый способ. Из условия (а, р) = 1 получаем ах + ру = 1 или
и, следовательно, х – мультипликативный обратный к а по модулю р.Второй способ. Предварительно напомним теорему Эйлера:
(а, р) = 1
, доказательство которой достаточно простое и мы его не приводим, так как его можно найти в любой книге по теории чисел. Частным случаем теоремы Эйлера является малая теорема Ферма.Малая теорема Ферма. Если р – простое число и а – произвольное целое число, не делящееся на р, то
.Следствие. В кольце Zp классов вычетов по модулю р из
следует, чтоТаким образом, для вычисления мультипликативного обратного к классу
по модулю р в случае, когда , достаточно возвести в степень k, где k = р – 2, если р – простое число, и в противном случае.Ясно, что при таком методе вычисления мультипликативного обратного элемента задача сводится к цепочке умножений и делений с остатком на модуль р. Эта задача решается без особых трудностей, если наименьший положительный вычет
, где , представлен в СОК. Однако возникает вопрос об эффективности этого метода. Другими словами, является ли наименьшим показателем степени, для которого ? Оказывается, что нет.Из китайской теореме об остатках следует следующее
Утверждение. Пусть
- каноническое представление числа р. Тогда функция, которая каждому классу ставит в соответствие кортеж , где для , является кольцевым изоморфизмом кольца класса вычетов по модулю р и кольца кортежей вида , где для . Более того, если обозначить через * любую из кольцевых операций + или · , тоТаким образом,
т. е. кольцо классов вычетов по модулю р раскладывается в прямое произведение колец классов вычетов по модулям
. Это разложение колец индуцирует разложение групп их обратимых элементов: .Можно сделать вывод о том, что произвольное целое положительное число А, 0 < A < P, где
и для , однозначно представимо своими наименьшими неотрицательными остатками по модулю , причём сложение (а, следовательно, и вычитание) и умножение выполняются покомпонентно.Как следует из китайской теоремы об остатках, можно использовать любой соответствующий интервал
целых чисел. Например, можно работать только с неотрицательными целыми числами, меньшими Р. С другой стороны, при выполнении операций сложения и вычитания, так же, как и умножения, обычно удобнее всего предположить, что все модули являются нечётными целыми числами, так что и тоже нечётное, и можно работать с целыми числами из интервала , симметричного относительно нуля.§ 5. Числа Мерсенна, Ферма и операции над ними
При рассмотрении отдельных классов простых чисел значительный интерес представляет вопрос о простых числах вида
, где m – нечётное, именуемые числами Мерсенна. При простых значениях m = p число может оказаться простым, но может быть составным.Например, при р = 2, 3, 5, 7, 13, 17, 19 мы получаем простые числа Мерсенна: 3, 7, 31, 127, 8191, 131071, а при р = 11, 23, 29 числа
- составные.Числа вида
, где k – положительное, обычно называют числами Ферма. При k = 0, 1, 2, 3, 4 числа Ферма простые: 3, 5, 17, 257, 65537. Все остальные числа Ферма – составные. Все числа Мерсенна и Ферма – взаимно простые.Необходимо отметить, что значения чисел Мерсенна и Ферма быстро растут. Это не позволяет использовать лишь их в качестве модуле СОК.
При работе же на двоичных компьютерах, иногда желательно выбирать модули
в виде чисел Мерсенна