Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы / Глава 3_Маш_ар-ка.doc
Скачиваний:
142
Добавлен:
15.02.2015
Размер:
1.68 Mб
Скачать

3.4.2. Модулярная арифметика

При выполнении арифметических действий можно оперировать не с самими числами, а с наборами их остатков по выбранной совокупности взаимно простых делителей. Теоретическим основанием этого является китайская теорема об остатках [19]:

Пусть натуральные числа попарно взаимно просты. Тогда:

1. Для любых целых чисел таких, что, найдётся число, которое при делении надаёт остаток.

2. Если числа иобладают указанным свойством, то.

Геометрически теорема означает, что откладывая на числовой оси от начальной точки последовательно раз отрезок длиной, можно придти при всехк одной и той же точкечисловой оси. Из теоремы следует также, что в диапазоне, где, каждое натуральное числооднозначно определяется остатками по взаимно простым модулям . С другой стороны, если известен только набор остатков , но нет сведений о реальной величине числа , восстановление числавозможно только с точностью до кратного числа:иимеют одинаковый набор остатков.

Напомним некоторые свойства сравнений:

1. .

2. , где.

3. Пусть и. Тогда.

4. Сравнения можно почленно складывать:

.

5. .

6. Сравнения можно почленно перемножать:

.

7. Обе части сравнения можно возводить в степень:

.

8. Обе части сравнения можно умножить на одно и то же число: .

9. Обе части сравнения можно сокращать на одно и то же число, взаимное простое с модулем:

Если и ,то .

10. Если , то , то есть, обе части сравнениявместе с модулем можно разделить на одно и то же число.

11. Пусть наименьшее общее кратное чисел . Если

то , то есть, если сравнение имеет место по нескольким модулям, то оно имеет место по модулю их НОК.

12. Пусть и. Тогда, то есть, если сравнение имеет место по модулю, то оно имеет место по модулю любого его делителя .

13. Если ,и, то, то есть, если одна часть сравнения и модуль делятся на, то и другая часть сравнения делится на.

Из свойств сравнений следует, что для чисел и, представленных наборами остатков и можно выполнять сложение, умножение и вычитание в виде:

;

.

Недостатком модулярной арифметики является невозможность непосредственного сравнения по величине двух чисел, представленных наборами остатков. Кроме того модулярные операции обычно сочетаются с операциями, предполагающими обычное представление (например, если необходимо выполнять деление). Модулярные операции существенно снижают затраты времени, если аппаратная реализация позволяет производить параллельно вычисления со всеми остатками.

3.4.3. Ускорение процесса умножения

При стандартном методе умножения разрядных чисел «в столбик» число выполняемых операций пропорционально, так что затрачиваемое время. Это время можно уменьшить, сокращая количество промежуточных умножений.

Пусть нужно перемножить в -ичной системе два числаи, которые имеют поразрядов:

.

Выделяя старших разрядов, можно представить их в виде:

,

где , — «более значимые половины» -ичного представления, а и— «менее значимые половины». Имеет место равенство:

, (*)

которое сводит умножение -битовых чисел к четырём умножениям-битовых и к нескольким операциям сложения и сдвига (умножение на степень основаниясводится в-ичном представлении к сдвигу цифр на соответствующее число позиций влево и дописыванию справа нулей ). Количество умножений можно уменьшить до трёх, используя дополнительные более быстрые операции сложения и вычитания. Именно,

,

где и уже вычислены. Подставляя в (*) правую часть последнего равенства вместо левой, получаем окончательную формулу для быстрого умножения:

.