Система остаточных классов - введение — различия между версиями
Isaeva (обсуждение | вклад) |
Isaeva (обсуждение | вклад) |
||
(не показано 17 промежуточных версии этого же участника) | |||
Строка 14: | Строка 14: | ||
'''Определение''' | '''Определение''' | ||
− | Говорят, что целое число <math>n \in Z</math> делится на | + | Говорят, что целое число <math>n \in Z</math> делится на целое число <math>m \in Z</math> с остатком, если имеется пара целых чисел <math>q</math> и <math>r</math>, таких, что <math>n = m \cdot q+r</math> и <math>0\le r<|m|</math>. |
Строка 50: | Строка 50: | ||
Отнесём все целые числа, дающие при делении на <math> m </math> один и тот же остаток в один класс, поэтому получится <math> m </math> различных классов по модулю <math> m </math>. | Отнесём все целые числа, дающие при делении на <math> m </math> один и тот же остаток в один класс, поэтому получится <math> m </math> различных классов по модулю <math> m </math>. | ||
− | Множество всех чисел сравнимых с <math> a </math> по модулю <math> m </math> называется | + | Множество всех чисел сравнимых с <math> a </math> по модулю <math> m </math> называется классом вычетов <math> a </math> по модулю <math> m </math>. |
Подробнее о свойствах сравнений и классах вычетов смотри [[Сравнения и их основные свойства| Сравнения и их основные свойства]] | Подробнее о свойствах сравнений и классах вычетов смотри [[Сравнения и их основные свойства| Сравнения и их основные свойства]] | ||
+ | |||
== Теорема о делении с остатком. Алгоритм Евклида == | == Теорема о делении с остатком. Алгоритм Евклида == | ||
Строка 58: | Строка 59: | ||
'''Теорема о делении с остатком''' | '''Теорема о делении с остатком''' | ||
− | Для любых целых | + | Для любых целых <math>a</math> и <math>b</math>, <math>b \not= 0</math>, существует единственный набор целых чисел <math>q</math> и <math>r</math>, что <math>a = bq + r</math> и <math>0 \le r < |b|</math>, где <math>|b|</math> — модуль числа <math>b</math>. |
Строка 79: | Строка 80: | ||
: <math>r_{n-1} = r_n q_n</math> | : <math>r_{n-1} = r_n q_n</math> | ||
− | Тогда | + | Тогда '''НОД''' <math>(a,b)</math>, наибольший общий делитель <math>a</math> и <math>b</math>, равен |
<math>r_n</math>, последнему ненулевому члену этой последовательности. | <math>r_n</math>, последнему ненулевому члену этой последовательности. | ||
Строка 87: | Строка 88: | ||
'''Корректность''' этого алгоритма вытекает из следующих двух утверждений: | '''Корректность''' этого алгоритма вытекает из следующих двух утверждений: | ||
− | * Пусть <math>a = bq + r</math>, тогда НОД | + | * Пусть <math>a = bq + r</math>, тогда '''НОД''' <math>(a,b)</math> = '''НОД''' <math>(b,r)</math>. |
− | * НОД(0, | + | * '''НОД''' <math>(0,r)</math> = <math>r</math> для любого ненулевого <math>r</math> (так как 0 делится на любое целое число, кроме нуля). |
+ | |||
+ | |||
+ | Смотри [[Теорема о делении с остатком. Алгоритм Евклида|Теорема о делении с остатком. Алгоритм Евклида]]. | ||
Строка 114: | Строка 118: | ||
Смотри также [[Описание КТО II|Китайская теорема об остатках(КТО II)]], [[Описание КТО III|Китайская теорема об остатках (КТО III)]]. | Смотри также [[Описание КТО II|Китайская теорема об остатках(КТО II)]], [[Описание КТО III|Китайская теорема об остатках (КТО III)]]. | ||
+ | |||
== Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю == | == Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю == | ||
Строка 119: | Строка 124: | ||
'''Определение''' | '''Определение''' | ||
− | Функция Эйлера <math> | + | Функция Эйлера <math>\varphi(n)</math> — это количество чисел от <math>1</math> до <math>n</math>, взаимно простых с <math>n</math>. |
− | Т.е. это количество таких натуральных чисел из отрезка [1; n], наибольший общий делитель (НОД) которых с <math>n</math> равен единице. | + | Т.е. это количество таких натуральных чисел из отрезка <math>[1; n]</math>, наибольший общий делитель (НОД) которых с <math>n</math> равен единице. |
'''Tеоремa Эйлера''' | '''Tеоремa Эйлера''' | ||
− | Если <math>a</math> и <math>p</math> взаимно просты, то <math>a^{ | + | Если <math>a</math> и <math>p</math> взаимно просты, то <math>a^{\varphi(p)} \equiv 1 \pmod p</math>, где <math>\varphi(n)</math> - функция Эйлера. |
− | |||
Частным случаем теоремы Эйлера является малая теорема Ферма. | Частным случаем теоремы Эйлера является малая теорема Ферма. | ||
Строка 144: | Строка 148: | ||
== Числа Мерсенна, Ферма и операции над ними == | == Числа Мерсенна, Ферма и операции над ними == | ||
− | При рассмотрении отдельных классов простых чисел интерес представляет вопрос о простых числах специального вида, например, числа Мерсенна или числа Ферма. | + | При рассмотрении отдельных классов простых чисел интерес представляет вопрос о простых числах специального вида, например, таких как числа Мерсенна или числа Ферма. |
'''Определение''' | '''Определение''' | ||
Строка 169: | Строка 173: | ||
Смотри [[Числа Мерсенна и Ферма|Числа Мерсенна и Ферма]]. | Смотри [[Числа Мерсенна и Ферма|Числа Мерсенна и Ферма]]. | ||
+ | |||
= Математические модели модулярного представления и параллельной обработки информации = | = Математические модели модулярного представления и параллельной обработки информации = | ||
− | == Представление числа в системе остаточных классов. Модульные операции == | + | |
+ | ==Определение системы остаточных классов== | ||
+ | |||
+ | Представление чисел в виде набора остатков от деления на выбранные натуральные модули - основания системы называется системой остаточных классов - СОК (residue number system - RNS) или модулярной системой счисления - МСС (modular system). | ||
+ | |||
+ | Смотри [[Система остаточных классов|Система остаточных классов]]. | ||
+ | |||
+ | |||
+ | == Выбор СОК как системы счисления == | ||
+ | |||
+ | Под системой счисления понимают совокупность символический метод записи чисел, представление чисел с помощью письменных знаков, или, точнее, способ кодирования (представления) элементов некоторой конечной модели действительных чисел словами одного или более алфавитов. | ||
+ | |||
+ | К любой кодовой системе применимы следующие требования: | ||
+ | |||
+ | * возможность представления в данной системе любой величины в рассматриваемом, заранее назначенном диапазоне; | ||
+ | * единственность представления – любая кодовая комбинация соответствует одному и только одному числу в заданном диапазоне; | ||
+ | * простота оперирования числами в данной системе счисления. | ||
+ | |||
+ | |||
+ | Системы счисления подразделяются на позиционные, непозиционные и смешанные. ([https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F#.D0.9D.D0.B5.D0.BF.D0.BE.D0.B7.D0.B8.D1.86.D0.B8.D0.BE.D0.BD.D0.BD.D1.8B.D0.B5_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC.D1.8B_.D1.81.D1.87.D0.B8.D1.81.D0.BB.D0.B5.D0.BD.D0.B8.D1.8F Система счисления]) | ||
+ | |||
+ | В позиционных системах счисления один и тот же числовой знак (цифра) в записи числа имеет различные значения в зависимости от того места (разряда), где он расположен. Обычно используется b-ричная система счисления, которая определяется целым числом b>1, называемым основанием системы счисления. | ||
+ | |||
+ | Смешанная система счисления является обобщением b-ричной системы счисления и также зачастую относится к позиционным системам счисления. Смотри [[Полиадический код|Полиадический код]]. | ||
+ | |||
+ | В непозиционных системах счисления величина, которую обозначает цифра, не зависит от её положения в числе. При этом система может накладывать ограничения на положение цифр. | ||
+ | |||
+ | Всякая вычислительная структура тесно связана с системой счисления, в которой она работает. | ||
+ | |||
+ | В обычной позиционной системе счисления (ПСС) значение разряда любого числа, кроме младшего, являющегося результатом двухместной арифметической операции, зависит не только от значения одноимённых операндов, но и от всех младших разрядов, т. е. ПСС обладает строго последовательной структурой. | ||
+ | Напротив, непозиционные коды с параллельной структурой позволяют реализовать распараллеливание операций на уровне выполнения элементарных арифметических действий. | ||
+ | |||
+ | В качестве такой непозиционной системы удобна система остаточных классов (СОК). | ||
+ | |||
+ | Базовые арифметические операции в СОК делятся на две группы: модульные и немодульные. | ||
+ | |||
+ | * Модульные операции, которые могут быть выполнены параллельно и независимо над отдельными цифрами чисел: сложение, умножение, вычитание без знака. | ||
+ | |||
+ | * Немодульные операции, которые требуют знания величины модулярных чисел в целом: сравнение, вычитание с получением отрицательного результата, контроль переполнения модулярного числа. | ||
+ | |||
+ | Основным достоинством системы остаточных классов является сравнительная простота выполнения модульных операций, недостатком - большая трудоемкость немодульных операций. | ||
+ | |||
+ | Смотри [[Представление числа в системе остаточных классов|Представление числа в системе остаточных классов]]. | ||
+ | |||
+ | |||
+ | == Модульные операции над числами в системе остаточных классов == | ||
+ | |||
+ | Возможность применения СОК в вычислительных алгоритмах обусловлено наличием определённого изоморфизма между математическими операциями над целыми числами и соответствующими операциями над системой целых неотрицательных остатков по отдельным модулям. Сложение, умножение, возведение в целую положительную степень любых целых положительных чисел идентичны соответствующим операциям, выполняемым над системой остатков. | ||
+ | |||
+ | Смотри [[Модульные операции|Модульные операции]]. | ||
+ | |||
== Основные методы и алгоритмы перехода от позиционного представления к остаткам == | == Основные методы и алгоритмы перехода от позиционного представления к остаткам == | ||
+ | |||
+ | Обычно исходные данные для вычислений представлены в каком-либо традиционном представлении, двоичном или десятичном. В таком же виде ожидаются результаты вычислений. Отсюда понятна необходимость перевода чисел из позиционного представления в представление СОК (прямое преобразование) и обратно (обратное преобразование). Одной из первых немодульных процедур является прямое преобразование позиционных кодов в код СОК. | ||
+ | |||
+ | Перевод числа в систему остаточных классов можно осуществить непосредственно методом деления, с модулями СОК в качестве делителей. Однако из-за сложности операции деления техническая реализация такого метода неэффективна. | ||
+ | Поэтому рассматриваются другие методы. | ||
+ | Например, часто используется метод перевода числа из позиционной системы счисления в СОК, не содержащий операции деления, называемый методом непосредственного суммирования модульных значений разрядов позиционного числа. | ||
+ | |||
+ | Смотри [[Алгоритмы перехода от позиционного представления к остаткам|Алгоритмы перехода от позиционного представления к остаткам]]. | ||
+ | |||
== Восстановление позиционного представления числа по его остаткам == | == Восстановление позиционного представления числа по его остаткам == | ||
+ | |||
+ | Система остаточных классов обладает одной особенностью, которую можно отнести к недостаткам этой системы: нельзя визуально определить величину числа, представленного в СОК, а следовательно затруднительно и выполнение таких операций, как сравнение чисел, определение знака числа. Один из путей решения этой проблемы состоит в преобразовании чисел из СОК в позиционную систему счисления. Оценим существующие способы перевода, как традиционные: метод ортогональных базисов; перевод числа в обобщенную позиционную систему (ОПС), так и недавно появившиеся интервальные методы перевода. | ||
+ | |||
+ | |||
+ | '''Метод ортогональных базисов''' | ||
+ | |||
+ | Метод восстановления числа по его остаткам был найден еще в Китае две тысячи лет назад. Основой этого метода является теорема, названная [[Китайская теорема об остатках| Китайской теоремой об остатках (КТО)]]. | ||
+ | |||
+ | Эта теорема лежит в основе метода ортогональных базисов при переводе из системы остаточных классов в позиционную систему счисления. | ||
+ | |||
+ | Смотри [[Метод ортогональных базисов|Метод ортогональных базисов]]. | ||
+ | |||
+ | |||
+ | '''Перевод числа из СОК в обобщенную позиционную систему (ОПС)''' | ||
+ | |||
+ | Еще один метод определения величины числа связан с переводом числа из системы остаточных классов в ОПС. Для того, чтобы рассмотреть этот метод, выявим связь между представлением некоторого числа в этих двух системах. | ||
+ | |||
+ | Пусть по-прежнему СОК задается основаниями <math>p_1, p_2, \ldots, p_n</math> и <math>A = ({\alpha}_1, {\alpha}_2, \ldots, {\alpha}_n)</math> - число в этой системе. И пусть <math>p_1, p_2, \ldots, p_n</math> являются также основаниями ОПС, тогда число <math>A</math> можно представить в виде | ||
+ | |||
+ | :<math>A = a_n\cdot p_1\cdot p_2\cdot \ldots \cdot p_{n-1} + a_{n-1}\cdot p_1\cdot p_2\cdot \ldots \cdot p_{n-2} + \ldots + a_3\cdot p_1\cdot p_2 + a_2\cdot p_1 + a_1</math> | ||
+ | |||
+ | где <math>0\le a_k<p_1\cdot p_2\cdot \ldots \cdot p_{k-1}</math> – коэффициенты (цифры) ОПС. | ||
+ | |||
+ | Очевидно, что диапазоны чисел, представимых в СОК и ОПС совпадают, т.е. можно говорить о наличии взаимно однозначного соответствия между множеством представлений чисел в СОК и ОПС. | ||
+ | |||
+ | Это равенство можно переписать в следующем виде: | ||
+ | |||
+ | :<math>A = a_1 + p_1(a_2 + p_2(a_3 + \ldots +p_{n-2}(a_{n-1} + p_{n-1} a_n) \ldots ))</math>, | ||
+ | |||
+ | откуда следует, что цифры ОПС могут быть получены из соотношений: | ||
+ | |||
+ | |||
+ | :<math>a_1 = A - \left[ \frac{A}{p_1}\right] \cdot p_1 = A - A_1\cdot p_1</math>, где <math>A_1 = \left[ \frac{A}{p_1}\right]</math>, | ||
+ | |||
+ | :<math>a_2 = A_1 - \left[ \frac{A_1}{p_2}\right] \cdot p_2 = A_1 - A_2\cdot p_2</math>, где <math>A_2 = \left[ \frac{A_1}{p_2}\right]</math>, | ||
+ | |||
+ | <math>\ldots</math> | ||
+ | |||
+ | :<math>a_n = A_{n-1} - \left[ \frac{A_{n-1}}{p_n}\right] \cdot p_n = A_{n-1} - A_n\cdot p_n</math>, где <math>A_n = \left[ \frac{A_{n-1}}{p_n}\right]</math>. | ||
+ | |||
+ | |||
+ | Причем при определении цифр <math>a_i</math> по этим формулам все вычисления можно вести в СОК. | ||
+ | |||
+ | Смотри [[Перевод числа из СОК в обобщенную позиционную систему|Перевод числа из СОК в обобщенную позиционную систему]]. | ||
+ | |||
+ | |||
+ | '''Интервальные методы перевода''' | ||
+ | |||
+ | Достаточно эффективными методами перевода чисел из СОК в ПСС являются интервальные методы, основанные на интервальных характеристиках чисел. Одна из таких характеристик – номер интервала. | ||
+ | |||
+ | Смотри [[Интервальные методы перевода|Интервальные методы перевода]]. | ||
+ | |||
== Расширение диапазона представления чисел == | == Расширение диапазона представления чисел == | ||
+ | |||
+ | Расширение системы оснований является одной из основных немодульных операций в СОК. Выполнение этой операции бывает необходимо при выполнении операции деления чисел, при вычислении позиционных характеристик, при обнаружении переполнения при выполнении сложения или умножения чисел. | ||
+ | |||
+ | Задачу расширения системы оснований можно сформулировать следующим образом: найти остаточное представление числа по новому основанию (новым основаниям), если известно представление числа по другим основаниям (остатки от деления на другие числа). | ||
+ | Один из путей расширения системы оснований состоит в переводе числа в позиционную систему счисления и вычисления остатка от деления на новый модуль. Этот путь не является рациональным с точки зрения числа операций. | ||
+ | |||
+ | Другой метод расширения системы оснований позволяет определить цифру числа по новому основанию, базируясь на таких позиционных характеристиках числа, как ранг числа, след числа. | ||
+ | |||
+ | Смотри [[Расширение диапазона представления чисел|Расширение диапазона представления чисел]]. | ||
+ | |||
= Литература = | = Литература = | ||
+ | |||
+ | Бухштаб А. А. Теория чисел – М: Наука, 1975 г. | ||
+ | |||
+ | Айерленд К. Классическое введение в современную теорию чисел. М: Мир, 1987. | ||
+ | |||
+ | Акушинский И. Л., Юдицкий Д. И. Машинная арифметика в остаточных классах. – М. Советское радио, 1968. | ||
+ | |||
+ | Амербаев В. М. Теоретические основы мащинной арифметики, - Алма –Ата: Наука, 1976. | ||
+ | |||
+ | |||
+ | ''Дополнительно'': | ||
+ | |||
+ | Куликов Л.Я. Алгебра и теория чисел: Учеб. пособие для педагогических институтов. — М.: Высш. школа, 1979. — 559 с. http://allmath.ru/highermath/algebra/theorychisel-ugu | ||
+ | |||
+ | Сизый С. В. Лекции по теории чисел. Учебное пособие для математических специальностей. Екатеринбург, Уральский государственный университет им. А.М.Горького, 1999. http://stu.sernam.ru/book_algebra.php |
Текущая версия на 13:44, 24 июня 2015
Содержание
- 1 Теоретико-числовая база построения системы остаточных классов
- 2 Математические модели модулярного представления и параллельной обработки информации
- 2.1 Определение системы остаточных классов
- 2.2 Выбор СОК как системы счисления
- 2.3 Модульные операции над числами в системе остаточных классов
- 2.4 Основные методы и алгоритмы перехода от позиционного представления к остаткам
- 2.5 Восстановление позиционного представления числа по его остаткам
- 2.6 Расширение диапазона представления чисел
- 3 Литература
Теоретико-числовая база построения системы остаточных классов
Напомним определение деления с остатком.
Определение
Говорят, что целое число делится на натуральное число с остатком, если имеется пара целых чисел и , таких, что и . называется делимым, - делителем, - неполным частным, - остатком.
Для целых чисел:
Определение
Говорят, что целое число делится на целое число с остатком, если имеется пара целых чисел и , таких, что и .
Пример:
48 при делении на 5 даёт остаток 3, т.к. , , -48 при делении на 5 даёт остаток 2, т.к. , .
Сравнения и их основные свойства
Возьмём произвольное фиксированное натуральное число и будем рассматривать остатки при делении на различных целых чисел.
При рассмотрении свойств этих остатков и проведении операций над ними удобно ввести понятие сравнения по модулю.
Определение
Два целых числа и называются сравнимыми по модулю , если их разность делится без остатка на .
Символически сравнимость записывается в виде формулы (сравнения):
Число называется модулем сравнения.
Эквивалентная формулировка:
Определение
Целые числа и называются сравнимыми по модулю , если остатки от деления этих чисел на равны.
Отношение сравнимости по модулю обладает свойствами рефлексивности, симметричности и транзитивности, т.е. является отношением эквивалентности.
Отнесём все целые числа, дающие при делении на один и тот же остаток в один класс, поэтому получится различных классов по модулю . Множество всех чисел сравнимых с по модулю называется классом вычетов по модулю .
Подробнее о свойствах сравнений и классах вычетов смотри Сравнения и их основные свойства
Теорема о делении с остатком. Алгоритм Евклида
Теорема о делении с остатком
Для любых целых и , , существует единственный набор целых чисел и , что и , где — модуль числа .
На этой операции основан алгоритм Евклида нахождения наибольшего общего делителя двух целых чисел.
Алгоритм Евклида для целых чисел
Пусть и — целые числа, не равные одновременно нулю, и последовательность чисел
определена тем, что каждое — это остаток от деления предпредыдущего числа на предыдущее, а предпоследнее делится на последнее нацело, то есть
Тогда НОД , наибольший общий делитель и , равен , последнему ненулевому члену этой последовательности.
Существование таких , то есть возможность деления с остатком на для любого целого и целого , доказывается индукцией.
Корректность этого алгоритма вытекает из следующих двух утверждений:
- Пусть , тогда НОД = НОД .
- НОД = для любого ненулевого (так как 0 делится на любое целое число, кроме нуля).
Смотри Теорема о делении с остатком. Алгоритм Евклида.
Китайская теорема об остатках
Фундаментальным положением, лежащим в основе модулярного представления чисел, является китайская теорема об остатках (Chinese Remainder Theorem - CRT). Например, эта теорема гарантирует, что при правильном выборе модулей СОК каждое число из динамического диапазона имеет в СОК единственное представление, и по этому представлению можно определить представленное число. В своей первоначальной формулировке эта теорема была доказана китайским математиком Сунь-Цзы приблизительно в 100 г. н.э. В современной формулировке теорема звучит так:
Теорема
Пусть - попарно взаимно простые числа, большие 1, и пусть . Тогда существует единственное неотрицательное решение по модулю следующей системы сравнений:
- ,
- ,
- ,
- .
Другими словами, отображение, которое каждому целому числу , , ставит в соответствие кортеж , где является биекцией кольца на декартово произведение колец .
Подробности и доказательство теоремы смотри Китайская теорема об остатках.
Смотри также Китайская теорема об остатках(КТО II), Китайская теорема об остатках (КТО III).
Теоремы Эйлера и Ферма, их роль в вычислении мультипликативных обратных элементов по заданному модулю
Определение
Функция Эйлера — это количество чисел от до , взаимно простых с .
Т.е. это количество таких натуральных чисел из отрезка , наибольший общий делитель (НОД) которых с равен единице.
Tеоремa Эйлера
Если и взаимно просты, то , где - функция Эйлера.
Частным случаем теоремы Эйлера является малая теорема Ферма.
Малая теорема Ферма
Если - простое число и - произвольное целое число, не делящееся на , то .
Смотри Функция Эйлера, Вычисление мультипликативных обратных элементов по заданному модулю.
Числа Мерсенна, Ферма и операции над ними
При рассмотрении отдельных классов простых чисел интерес представляет вопрос о простых числах специального вида, например, таких как числа Мерсенна или числа Ферма.
Определение
Числа Мерсенна — числа вида , где — натуральное число. Названы в честь французского математика Марена Мерсенна.
Иногда числами Мерсенна называют только числа с нечетными или простыми индексами n.
Множества простых чисел в этих последовательностях совпадают, а потому понятие простого числа Мерсенна не зависит от того, как именно определяются числа Мерсенна.
При простых значениях n = p число может оказаться простым, но может быть составным. Например, при мы получаем простые числа Мерсенна: , а при числа - составные.
Определение
Числа Ферма — числа вида , где n — неотрицательное целое число.
При числа Ферма простые: . Известно, что для числа являются составными. На 2014 г. не найдено ни одного простого числа такого вида для .
Все числа Мерсенна и Ферма – взаимно простые. Кроме того, для модулей СОК вида , легко реализуется преобразование и арифметические операции. Поэтому эффективно выбирать модули СОК в виде чисел Мерсенна и Ферма.
Смотри Числа Мерсенна и Ферма.
Математические модели модулярного представления и параллельной обработки информации
Определение системы остаточных классов
Представление чисел в виде набора остатков от деления на выбранные натуральные модули - основания системы называется системой остаточных классов - СОК (residue number system - RNS) или модулярной системой счисления - МСС (modular system).
Смотри Система остаточных классов.
Выбор СОК как системы счисления
Под системой счисления понимают совокупность символический метод записи чисел, представление чисел с помощью письменных знаков, или, точнее, способ кодирования (представления) элементов некоторой конечной модели действительных чисел словами одного или более алфавитов.
К любой кодовой системе применимы следующие требования:
- возможность представления в данной системе любой величины в рассматриваемом, заранее назначенном диапазоне;
- единственность представления – любая кодовая комбинация соответствует одному и только одному числу в заданном диапазоне;
- простота оперирования числами в данной системе счисления.
Системы счисления подразделяются на позиционные, непозиционные и смешанные. (Система счисления)
В позиционных системах счисления один и тот же числовой знак (цифра) в записи числа имеет различные значения в зависимости от того места (разряда), где он расположен. Обычно используется b-ричная система счисления, которая определяется целым числом b>1, называемым основанием системы счисления.
Смешанная система счисления является обобщением b-ричной системы счисления и также зачастую относится к позиционным системам счисления. Смотри Полиадический код.
В непозиционных системах счисления величина, которую обозначает цифра, не зависит от её положения в числе. При этом система может накладывать ограничения на положение цифр.
Всякая вычислительная структура тесно связана с системой счисления, в которой она работает.
В обычной позиционной системе счисления (ПСС) значение разряда любого числа, кроме младшего, являющегося результатом двухместной арифметической операции, зависит не только от значения одноимённых операндов, но и от всех младших разрядов, т. е. ПСС обладает строго последовательной структурой. Напротив, непозиционные коды с параллельной структурой позволяют реализовать распараллеливание операций на уровне выполнения элементарных арифметических действий.
В качестве такой непозиционной системы удобна система остаточных классов (СОК).
Базовые арифметические операции в СОК делятся на две группы: модульные и немодульные.
- Модульные операции, которые могут быть выполнены параллельно и независимо над отдельными цифрами чисел: сложение, умножение, вычитание без знака.
- Немодульные операции, которые требуют знания величины модулярных чисел в целом: сравнение, вычитание с получением отрицательного результата, контроль переполнения модулярного числа.
Основным достоинством системы остаточных классов является сравнительная простота выполнения модульных операций, недостатком - большая трудоемкость немодульных операций.
Смотри Представление числа в системе остаточных классов.
Модульные операции над числами в системе остаточных классов
Возможность применения СОК в вычислительных алгоритмах обусловлено наличием определённого изоморфизма между математическими операциями над целыми числами и соответствующими операциями над системой целых неотрицательных остатков по отдельным модулям. Сложение, умножение, возведение в целую положительную степень любых целых положительных чисел идентичны соответствующим операциям, выполняемым над системой остатков.
Смотри Модульные операции.
Основные методы и алгоритмы перехода от позиционного представления к остаткам
Обычно исходные данные для вычислений представлены в каком-либо традиционном представлении, двоичном или десятичном. В таком же виде ожидаются результаты вычислений. Отсюда понятна необходимость перевода чисел из позиционного представления в представление СОК (прямое преобразование) и обратно (обратное преобразование). Одной из первых немодульных процедур является прямое преобразование позиционных кодов в код СОК.
Перевод числа в систему остаточных классов можно осуществить непосредственно методом деления, с модулями СОК в качестве делителей. Однако из-за сложности операции деления техническая реализация такого метода неэффективна. Поэтому рассматриваются другие методы. Например, часто используется метод перевода числа из позиционной системы счисления в СОК, не содержащий операции деления, называемый методом непосредственного суммирования модульных значений разрядов позиционного числа.
Смотри Алгоритмы перехода от позиционного представления к остаткам.
Восстановление позиционного представления числа по его остаткам
Система остаточных классов обладает одной особенностью, которую можно отнести к недостаткам этой системы: нельзя визуально определить величину числа, представленного в СОК, а следовательно затруднительно и выполнение таких операций, как сравнение чисел, определение знака числа. Один из путей решения этой проблемы состоит в преобразовании чисел из СОК в позиционную систему счисления. Оценим существующие способы перевода, как традиционные: метод ортогональных базисов; перевод числа в обобщенную позиционную систему (ОПС), так и недавно появившиеся интервальные методы перевода.
Метод ортогональных базисов
Метод восстановления числа по его остаткам был найден еще в Китае две тысячи лет назад. Основой этого метода является теорема, названная Китайской теоремой об остатках (КТО).
Эта теорема лежит в основе метода ортогональных базисов при переводе из системы остаточных классов в позиционную систему счисления.
Смотри Метод ортогональных базисов.
Перевод числа из СОК в обобщенную позиционную систему (ОПС)
Еще один метод определения величины числа связан с переводом числа из системы остаточных классов в ОПС. Для того, чтобы рассмотреть этот метод, выявим связь между представлением некоторого числа в этих двух системах.
Пусть по-прежнему СОК задается основаниями и - число в этой системе. И пусть являются также основаниями ОПС, тогда число можно представить в виде
где – коэффициенты (цифры) ОПС.
Очевидно, что диапазоны чисел, представимых в СОК и ОПС совпадают, т.е. можно говорить о наличии взаимно однозначного соответствия между множеством представлений чисел в СОК и ОПС.
Это равенство можно переписать в следующем виде:
- ,
откуда следует, что цифры ОПС могут быть получены из соотношений:
- , где ,
- , где ,
- , где .
Причем при определении цифр по этим формулам все вычисления можно вести в СОК.
Смотри Перевод числа из СОК в обобщенную позиционную систему.
Интервальные методы перевода
Достаточно эффективными методами перевода чисел из СОК в ПСС являются интервальные методы, основанные на интервальных характеристиках чисел. Одна из таких характеристик – номер интервала.
Смотри Интервальные методы перевода.
Расширение диапазона представления чисел
Расширение системы оснований является одной из основных немодульных операций в СОК. Выполнение этой операции бывает необходимо при выполнении операции деления чисел, при вычислении позиционных характеристик, при обнаружении переполнения при выполнении сложения или умножения чисел.
Задачу расширения системы оснований можно сформулировать следующим образом: найти остаточное представление числа по новому основанию (новым основаниям), если известно представление числа по другим основаниям (остатки от деления на другие числа). Один из путей расширения системы оснований состоит в переводе числа в позиционную систему счисления и вычисления остатка от деления на новый модуль. Этот путь не является рациональным с точки зрения числа операций.
Другой метод расширения системы оснований позволяет определить цифру числа по новому основанию, базируясь на таких позиционных характеристиках числа, как ранг числа, след числа.
Смотри Расширение диапазона представления чисел.
Литература
Бухштаб А. А. Теория чисел – М: Наука, 1975 г.
Айерленд К. Классическое введение в современную теорию чисел. М: Мир, 1987.
Акушинский И. Л., Юдицкий Д. И. Машинная арифметика в остаточных классах. – М. Советское радио, 1968.
Амербаев В. М. Теоретические основы мащинной арифметики, - Алма –Ата: Наука, 1976.
Дополнительно:
Куликов Л.Я. Алгебра и теория чисел: Учеб. пособие для педагогических институтов. — М.: Высш. школа, 1979. — 559 с. http://allmath.ru/highermath/algebra/theorychisel-ugu
Сизый С. В. Лекции по теории чисел. Учебное пособие для математических специальностей. Екатеринбург, Уральский государственный университет им. А.М.Горького, 1999. http://stu.sernam.ru/book_algebra.php