|
|||||
Математика: Теория чисел.Китайская теорема об остатках.Пусть 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 - обратного элемента по модулю можно осуществить по алгоритму Евклида. Вверх по странице, к оглавлению и навигации. | |||||