Система остаточных классов - введение
Содержание
Теоретико-числовая база построения системы остаточных классов
Напомним определение деления с остатком.
Определение
Говорят, что целое число делится на натуральное число с остатком, если имеется пара целых чисел и , таких, что и . называется делимым, - делителем, - неполным частным, - остатком.
Для целых чисел:
Определение
Говорят, что целое число делится на натуральное число с остатком, если имеется пара целых чисел и , таких, что и .
Пример:
48 при делении на 5 даёт остаток 3, т.к. , , -48 при делении на 5 даёт остаток 2, т.к. , .
Сравнения и их основные свойства
Возьмём произвольное фиксированное натуральное число и будем рассматривать остатки при делении на различных целых чисел.
При рассмотрении свойств этих остатков и проведении операций над ними удобно ввести понятие сравнения по модулю.
Определение
Два целых числа и называются сравнимыми по модулю , если их разность делится без остатка на .
Символически сравнимость записывается в виде формулы (сравнения):
Число называется модулем сравнения.
Эквивалентная формулировка:
Определение
Целые числа и называются сравнимыми по модулю , если остатки от деления этих чисел на равны.
Отношение сравнимости по модулю обладает свойствами рефлексивности, симметричности и транзитивности, т.е. является отношением эквивалентности.
Отнесём все целые числа, дающие при делении на один и тот же остаток в один класс, поэтому получится различных классов по модулю . Множество всех чисел сравнимых с по модулю называется классом вычетов по модулю .
Подробнее о свойствах сравнений и классах вычетов смотри Сравнения и их основные свойства
Теорема о делении с остатком. Алгоритм Евклида
Теорема о делении с остатком
Для любых целых a и b, , существует единственный набор целых чисел q и r, что a = bq + r и , где |b| — модуль числа b.
На этой операции основан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.
Алгоритм Евклида для целых чисел
Пусть и — целые числа, не равные одновременно нулю, и последовательность чисел
определена тем, что каждое — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть
Тогда НОД(a,b), наибольший общий делитель и , равен , последнему ненулевому члену этой последовательности.
Существование таких , то есть возможность деления с остатком на для любого целого и целого , доказывается индукцией.
Корректность этого алгоритма вытекает из следующих двух утверждений:
- Пусть , тогда НОД (, ) = НОД (, ).
- НОД(0,) = для любого ненулевого (так как 0 делится на любое целое число, кроме нуля).
Китайская теорема об остатках
Фундаментальным положением, лежащим в основе модулярного представления чисел, является китайская теорема об остатках (Chinese Remainder Theorem - CRT). Например, эта теорема гарантирует, что при правильном выборе модулей СОК каждое число из динамического диапазона имеет в СОК единственное представление, и по этому представлению можно определить представленное число. В своей первоначальной формулировке эта теорема была доказана китайским математиком Сунь-Цзы приблизительно в 100 г. н.э. В современной формулировке теорема звучит так:
Теорема
Пусть - попарно взаимно простые числа, большие 1, и пусть . Тогда существует единственное неотрицательное решение по модулю следующей системы сравнений:
- ,
- ,
- ,
- .
Другими словами, отображение, которое каждому целому числу , , ставит в соответствие кортеж , где является биекцией кольца на декартово произведение колец .
Подробности и доказательство теоремы смотри Китайская теорема об остатках.
Смотри также Китайская теорема об остатках(КТО II), Китайская теорема об остатках (КТО III).
Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю
Определение
Функция Эйлера — это количество чисел от до , взаимно простых с .
Т.е. это количество таких натуральных чисел из отрезка [1; n], наибольший общий делитель (НОД) которых с равен единице.
Tеоремa Эйлера
Если и взаимно просты, то , где - функция Эйлера.
В частном случае, когда простое, теорема Эйлера превращается в так называемую малую теорему Ферма:
Частным случаем теоремы Эйлера является малая теорема Ферма.
Малая теорема Ферма
Если - простое число и - произвольное целое число, не делящееся на , то .
Смотри Функция Эйлера, Вычисление мультипликативных обратных элементов по заданному модулю.
Числа Мерсенна, Ферма и операции над ними
При рассмотрении отдельных классов простых чисел интерес представляет вопрос о простых числах специального вида, например, числа Мерсенна или числа Ферма.
Определение
Числа Мерсенна — числа вида , где — натуральное число. Названы в честь французского математика Марена Мерсенна.
Иногда числами Мерсенна называют только числа с нечетными или простыми индексами n.
Множества простых чисел в этих последовательностях совпадают, а потому понятие простого числа Мерсенна не зависит от того, как именно определяются числа Мерсенна.
При простых значениях n = p число может оказаться простым, но может быть составным. Например, при мы получаем простые числа Мерсенна: , а при числа - составные.
Определение
Числа Ферма — числа вида , где n — неотрицательное целое число.
При числа Ферма простые: . Известно, что для числа являются составными. На 2014 г. не найдено ни одного простого числа такого вида для .
Все числа Мерсенна и Ферма – взаимно простые. Кроме того, для модулей СОК вида , легко реализуется преобразование и арифметические операции. Поэтому эффективно выбирать модули СОК в виде чисел Мерсенна и Ферма.
Смотри Числа Мерсенна и Ферма.
Математические модели модулярного представления и параллельной обработки информации
Представление числа в системе остаточных классов. Модульные операции
Всякая вычислительная структура тесно связана с системой счисления, в которой она работает. Под системой счисления понимают совокупность приёмов обозначения (записи) чисел, или, точнее, способ кодирования (представления) элементов некоторой конечной модели действительных чисел словами одного или более алфавитов. Кодирование представляет собой инъективное отображение диапазона системы счисления на декартово произведение его алфавитов, т. е. , где .
Иначе говоря, отображение элементу ставит в соответствие кодовое слово , где - -я цифра, – длина кода.
С помощью обратного отображения , которое называют декодированием, можно определить систему счисления.
К любой кодовой системе применимы следующие требования:
- возможность представления в данной системе любой величины в рассматриваемом, заранее назначенном диапазоне;
- единственность представления – любая кодовая комбинация соответствует одному и только одному числу в заданном диапазоне;
- простота оперирования числами в данной системе счисления.
Таким образом, коды чисел являются именами числовых объектов, составляющих числовой диапазон. Диапазоны как модели вещественных чисел должны с максимально доступной полнотой и простотой отражать свойства числового множества.
Всякое представление чисел рабочего диапазона является лишь составным элементом соответствующей машинной арифметики и не может рассматриваться отдельно от неё. Арифметические свойства той или иной системы счисления прежде всего определяются характером межразрядных связей, появляющихся в ходе выполнения операций над кодовыми словами. Исследования показали, что в рамках обычной позиционной системы счисления (ПСС) значительного ускорения выполнения операций добиться невозможно. Это объясняется тем, что в ПСС значение разряда любого числа, кроме младшего, являющегося результатом двухместной арифметической операции, зависит не только от значения одноимённых операндов, но и от всех младших разрядов, т. е. ПСС обладает строго последовательной структурой. Сегодня, предпочтение отдаётся вычислительным структурам, обладающими способностями к параллельной обработке информации. Этими особенностями обладают непозиционные коды с параллельной структурой, которые позволяют реализовать идею распараллеливания операций на уровне выполнения элементарных арифметических действий.
Представление чисел в виде набора остатков от деления на выбранные натуральные модули - основания системы называется системой остаточных классов - СОК (residue number system - RNS) или модулярной системой счисления - МСС (modular system).
Основным достоинством системы остаточных классов является сравнительная простота выполнения модульных операций (сложения, вычитания, умножения). Кроме модульных операций, в цифровых устройствах часто выполняются и такие операции, которые требуют знания всего числа в целом. Данные операции являются немодульными и относятся к классу позиционных операций, которые являются наиболее трудоемкими в непозиционной СОК.
Смотри Представление числа в системе остаточных классов, Модульные операции.
Основные методы и алгоритмы перехода от позиционного представления к остаткам
Обычно исходные данные для вычислений представлены в каком-либо традиционном представлении, двоичном или десятичном. В таком же виде ожидаются результаты вычислений. Отсюда понятна необходимость перевода чисел из позиционного представления в представление СОК (прямое преобразование) и обратно (обратное преобразование). Одной из первых немодульных процедур является прямое преобразование позиционных кодов в код СОК.
Перевод числа в систему остаточных классов можно осуществить непосредственно методом деления, с модулями СОК в качестве делителей. Однако из-за сложности операции деления техническая реализация такого метода неэффективна. Поэтому рассматриваются другие методы. Например, часто используется метод перевода числа из позиционной системы счисления в СОК, не содержащий операции деления, называемый методом непосредственного суммирования модульных значений разрядов позиционного числа.
Смотри Алгоритмы перехода от позиционного представления к остаткам.
Восстановление позиционного представления числа по его остаткам
Система остаточных классов обладает одной особенностью, которую можно отнести к недостаткам этой системы: нельзя визуально определить величину числа, представленного в СОК, а следовательно затруднительно и выполнение таких операций, как сравнение чисел, определение знака числа. Один из путей решения этой проблемы состоит в преобразовании чисел из СОК в позиционную систему счисления. Оценим существующие способы перевода, как традиционные: метод ортогональных базисов; перевод числа в обобщенную позиционную систему (ОПС), так и недавно появившиеся интервальные методы перевода.
Метод ортогональных базисов
Метод восстановления числа по его остаткам был найден еще в Китае две тысячи лет назад. Основой этого метода является теорема, названная Китайской теоремой об остатках (КТО).
Эта теорема лежит в основе метода ортогональных базисов при переводе из системы остаточных классов в позиционную систему счисления.
Смотри Метод ортогональных базисов.
Перевод числа из СОК в обобщенную позиционную систему (ОПС)
Еще один метод определения величины числа связан с переводом числа из системы остаточных классов в ОПС. Для того, чтобы рассмотреть этот метод, выявим связь между представлением некоторого числа в этих двух системах.
Пусть по-прежнему СОК задается основаниями число в этой системе. И пусть – также основания ОПС, тогда число можно представить в виде
где – коэффициенты (цифры) ОПС.
Очевидно, что диапазоны чисел, представимых в СОК и ОПС совпадают, т.е. можно говорить о наличии взаимно однозначного соответствия между множеством представлений чисел в СОК и ОПС.
Это равенство можно переписать в следующем виде:
откуда следует, что цифры ОПС могут быть получены из соотношений:
Причем при определении цифр по формулам все вычисления можно вести в СОК.
Смотри Перевод числа из СОК в обобщенную позиционную систему.
Интервальные методы перевода
Достаточно эффективными методами перевода чисел из СОК в ПСС являются интервальные методы, основанные на интервальных характеристиках чисел. Одна из таких характеристик – номер интервала.
Смотри Интервальные методы перевода.
Расширение диапазона представления чисел
Расширение системы оснований является одной из основных немодульных операций в СОК. Выполнение этой операции бывает необходимо при выполнении операции деления чисел, при вычислении позиционных характеристик, при обнаружении переполнения при выполнении сложения или умножения чисел.
Задачу расширения системы оснований можно сформулировать следующим образом: найти остаточное представление числа по новому основанию (новым основаниям), если известно представление числа по другим основаниям остатки от деления на другие числа. Один из путей расширения системы оснований состоит в переводе числа в позиционную систему счисления и вычисления остатка от деления на новый модуль. Этот путь не является рациональным с точки зрения числа операций.
Другой метод расширения системы оснований позволяет определить цифру числа по новому основанию, базируясь на таких позиционных характеристиках числа, как ранг числа, след числа.
Смотри Расширение диапазона представления чисел.