◄ ДП Фурье в конечных полях
▲ Выше
Примеры КОРНЕЙ ►
ТЧП Гаусса ►
|
Числовое преобразование Ферма |
Fn=1+22n
n=0,1,2,3,4,.. |
Она глядит на вас так нежно, она лепечет так небрежно, она так тонко весела, её глаза так полны чувством, вечор она с таким искусством из-под накрытого стола свою мне ножку подала! Зачем я ею очарован? Зачем расстаться должен с ней? Когда б я не был избалован цыганской жизнию моей, когда б не смутное влеченье чего-то жаждущей души, я б здесь остался — наслажденье вкушать в неведомой тиши; забыл бы всех желаний трепет, мечтою б целый мир назвал... И всё бы слушал этот лепет, всё б эти ножки целовал.
Александр Пушкин
сентябрь 1833. |
Принимаясь за дело, соберись с духом. Козьма Прутков "Мысли и афоризмы",56. |
Книга книгой — а мозгами двигай. Владимир Маяковский |
Чтобы найти ВЫЧЕТ T−1 mod Fn по определению нужно решить уравнение
б
T·T−1
сFn
= 1
относительно T−1.
В общем случае это делается подбором или полным перебором. Рассмотрим такой алгоритм
на примере нахождения обратных значений 1/T по модулю чисел Ферма. Очевидно, что
б
k·Fn−1
сFn
= −1 , где k=1,...,Fn
и
б
(k−1)·Fn+1
сFn
= +1 , где k=1,...,Fn .
Тогда имеем формулу (1)
б
T−1
сFn
=
Fn − (k·Fn−1)/T ,
если
б
k·Fn−1
сT
= 0
или формулу (2)
б
T−1
сFn
=
+ ((k−1)·Fn+1)/T ,
если
б
(k−1)·Fn+1
сT
= 0 .
Например, при
Fn
=
F2
=
17
по формуле (1) имеем
k = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 k·F2 − 1 = k·17 − 1 = 16 33 50 67 84 101 118 135 152 169 186 203 220 237 254 Тогда для T=8 при k=1,...,15
б
k·17 − 1
с8
= 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 ,
т.е. при k=1
б
1·17 − 1
с8
= 0 , тогда
б
8−1
с17
=
17 − (1·17−1)/8
=
17 − 2
=
+15
Для T=4 при k=1,...,15
б
k·17 − 1
с4
= 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 ,
т.е. при k=1
б
1·17 − 1
с4
= 0 , тогда
б
4−1
с17
=
17 − (1·17−1)/4
=
17 − 4
=
+13
А по формуле (2) имеем
k = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (k−1)·F2 + 1 = (k−1)·17 + 1 = 1 18 35 52 69 86 103 120 137 154 171 188 205 222 239 256 Тогда для T=8 при k=1,...,16
б
(k−1)·17 + 1
с8
= 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 ,
т.е. при k=8
б
(8−1)·17 + 1
с8
= 0 , тогда
б
8−1
с17
=
+ ((8−1)·17+1)/8
=
120/8
=
+15
Для T=4 при k=1,...,16
б
(k−1)·17 + 1
с4
= 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 ,
т.е. при k=4
б
(4−1)·17 + 1
с4
= 0 , тогда
б
4−1
с17
=
+ ((4−1)·17+1)/4
=
52/4
=
+13
Резюмируя, можно сказать, что в этом примере по формуле (1) ответ
получается быстрее, чем по формуле (2).
|
Зри в корень Козьма Прутков "Мысли и афоризмы",5. |
Для составных Fn , также как и для простых, КОРЕНЬ из 1 root=2 имеет порядок
T
=
2n+1
=
2·2n
=
2b ,
а
б
T−1
сFn
=
б
(2n+1)−1
сFn
=
б
2(2b−(n+1))
сFn
=
б
2(2(n+1)−(n+1))
сFn .
Отсюда по аналогии (следует)
б
2(
−
б
t·k
сT
)
сFn
=
б
2(2(n+1)−
б
t·k
сT
)
сFn .
Далее, для простых и составных Fn КОРЕНЬ из 1 вида
root
=
22m
,
m=0,...,n
имеет порядок
T
=
2M
=
2(n+1−m)
=
2b·2−m
,
где
b=2n .
Рассмотрим КОРЕНЬ
root
=
б
Ц2
сFn
=
2b/4(2b/2−1)
=
Учитывая, что
= 2b/4+b/2 − 2b/4 .
б
22b
сFn
= 1
и, кроме того, поскольку
22b=2b·2b=−2b
и
2(2b−b/2)=−2+b/2 ,
проводим непосредственную проверку
б
(Ц2)2
сFn
=
б
(
2b/4(2b/2−1)
)2
сFn
=
Поэтому
root2=б
(Ц2)2
сFn=2
.
Далее (по другой формуле),
= б 2b/2(2b+1−2·2b/2) сFn = = б 2b/2(2b−2b−2·2b/2) сFn = = б 2b/2(−2(b/2+1)) сFn = = б −2(b+1) сFn = б 2 сFn .
б
(Ц2)2
сFn
=
б
(
2b/4(1+2−b/2)
)2
сFn
=
Обратная величина — КОРЕНЬ
1/root
= б 2b/2(1+2−b+2·2−b/2 сFn = = б 2b/2(1+22b·2−b+2(−b/2+1) сFn = = б 2b/2(1+22b−b+2(−b/2+1) сFn = = б 2b/2(−2b+2b+2(−b/2+1) сFn = = б 2b/2·2(−b/2+1) сFn = б 2 сFn .
root−1
=
б
(Ц2)−1
сFn
=
б
( 2b/4·(2b/2−1) )−1
сFn
=
КОРЕНЬ
root
=
б
Ц2
сFn
для n > 1 имеет порядок
б 1/( 2b/4·(2b/2−1) ) сFn = = б 2−b/4·(2b/2+1) / (2b/2−1)·(2b/2+1) сFn = = б (2−b/4+2b/4) / (2b−1) сFn = = б (2−b/4+2b/4) / (2b−(−2b)) сFn = = б 2b/4(2−b/2+1) / 2·2b сFn = = б −2b·2b/4(2(2b−b/2)+1) / 2·2b сFn = = б −( 2b/4(−2+b/2+1) / 2 ) сFn = = б −( (−2b/2+b/4+2b/4) / 2 ) сFn = = б (2b/2+b/4−2b/4) / 2 сFn = = б 2(b/2+b/4 −1)−2(b/4 −1) сFn .
T
=
2n+2
=
2n·22
=
b·4 = 4b .
Рассмотрим, для примера, число Ферма
F2=17=24+1
и поле GF(17) ВЫЧЕТов mod 17.
Первообразными (примитивными) КОРНЯми из 1 являются такие числа,
степени которых образуют все элементы поля (т.е. их порядок максимален).
У НЕпримитивного КОРНЯ root=4 порядок T=4 ,
у НЕпримитивного КОРНЯ root=2 порядок T=8 ,
у примитивных КОРНЕЙ root=3 и root=6 порядок T=16.
Очевидно, что
б
2
с17
=
б
62
с17 ,
тогда имеем
б
Ц2
с17
=
б
6
с17
=
Учитывая, что
= б 8-2 с17 = б 8 с17 − б 2 с17 = = б 23 с17 − б 21 с17 = = б 3−1 с17 .
б
6·6−1
с17
=
1
=
б
1+17
с17
=
б
6·3
с17
имеем для обратных величин
б
(
Ц2
)−1
с17
=
б
6−1
с17
=
б
3
с17
=
Это значит, что существует ЧП Ферма длины T=16 с примитивным КОРНЕм
= б 4-1 с17 = б 4 с17 − б 1 с17 = = б 22 с17 − б 20 с17 .
root=
б
Ц2
с17
=
б
6
с17 ,
который представим в виде степеней двойки как
б
6
с17
=
б
8-2
с17
=
б
23
с17
−
б
21
с17 ,
а также, что существует обратное ЧП Ферма длины T=16 с примитивным КОРНЕм
root=б
(Ц2)−1
с17
=
б
6−1
с17
=
б 3 с17,
который представим в виде степеней двойки как
б
3
с17
=
б
4-1
с17
=
б
22
с17
−
б
20
с17.
Поэтому умножения чисел на степени root можно вычислять,
используя только сдвиги. Например, для умножения на root=6 достаточно
двух сдвигов (на 3 бита и на 1 бит — это соответствует умножениям на 23
и на 21) и одного вычитания результатов этих сдвигов.
|
Нет пределов совершенству. Поговорка |
Базовый элемент root в T-точечном ЧП Ферма (или в ЧП Ферма порядка T, или длины T) удовлетворяет условию
root
=
б
gj
(Fn−1)/T)
сFn
=
б
gj
(
22n
)
/T
сFn
,
где
gj — примитивный КОРЕНЬ из 1, а при
T=2b=2n+1
имеем
root
=
б
gj
(
22n
)
/
(
2n+1
)
сFn
=
б
gj
(
2(2n−(n+1))
)
сFn
.
При root=2 или root=22m ЧП Ферма называют преобразованием Рейдера или ТЧП Рейдера, которое можно вычислять без целочисленных умножений на степени основания (=2), т.е. на
root
б
wt
сT
=
2
б
2m
·
wt
сT
,
используя только сдвиги влево (т.е. умножения на степени двойки ,
сложения и вычитания.
|
|
Три дела, однажды начавши, трудно кончить: 1) вкушать хорошую пищу; 2) беседовать с другом, возвратившимся из похода и 3) чесать, где чешется. Козьма Прутков "Мысли и афоризмы",45. |
◄ ДП Фурье в конечных полях ▲ В начало текущей ММ ЧПФ ► ТЧП Гаусса ► |
Последнее обновление 09.09.2007, size=76 452 bytes
© 2005 г., Александр Тимофеев, г.Харьков, Украина, eMail: atimopheyev@yahoo.com |