|
|||||
Математика: Теория чисел.Китайская теорема об остатках.Пусть B - натуральное число, m1, m2, ..., mt - взаимно простые натуральные числа, произведение которых больше либо равно B. Теорема. любое число x: 0 <= x <= B может быть однозначно представлено в виде последовательности v(x) = (v1, v2, ..., vt), где vi = x(mod mi). Эта последовательность называется модульным представлением x. Набор модульныых представлений для всех x: 0 <= x <= B называется системой вычетов. Операции.Сумма - последовательность wi = vi + ui mod miПроизведение - аналогично zi = vi * ui mod mi. Знакомым с теорией колец: теорема <=> ZB = Zm1 + ... + Zmt, сумма прямая.Из этого все операции определяются очевидным образом. Восстановление: алгоритм Гарнера.Даю псевдокод 1. For i from 2 to t { 1.1 Ci := 1; 1.2 For j from 1 to (i-1) { u := mj-1 mod mi; Ci := u*Ci mod mi; } } 2. u := v1; x := u; 3. For i from 2 to t { u := (vi-x)Ci mod mi; x := x + u* [ Произведение mj от j=1 до i-1 ]; } 4. return (x); Пример: пусть Константы Ci: C2=3, C3=6, C4=5. Значения (i, u, x), вычисленные на шаге 3: (1, 2, 2); (2, 4, 22); (3, 7, 267) и (4, 5, 2192). Таким образом модульное представление v(x) отвечает x = 2192. Прим. Нахождение m-1 - обратного элемента по модулю можно осуществить по алгоритму Евклида. Вверх по странице, к оглавлению и навигации.
|