Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретико-числовые алгоритмы в криптографии.pdf
Скачиваний:
311
Добавлен:
23.03.2015
Размер:
2.46 Mб
Скачать

48 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел

На основе изложенного в данной главе материала можно сделать вывод о том, что в нашем распоряжении имеются быстрые и эффективные алгоритмы для проверки простоты чисел и построения больших простых чисел.

§1.9. Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел

К тому моменту, когда большая´ часть этой книги уже была написана, появилась замечательная работа индийских математиков Агравала, Кайала и Саксены [50], в которой получен детерминированный алгоритм проверки простоты натуральных чисел, имеющий сложность O(log12 n(log log n)c) арифметических операций (n — проверяемое на простоту число, c — некоторая абсолютная константа). Далее мы приводим описание и обоснование этого алгоритма. Символ

O(t(n)) мы будем использовать для обозначения O(t(n) log n), где какая-либо положительная постоянная.

Алгоритм работы [50] основан на следующей теореме.

Теорема 1.71. Пусть p — нечетное натуральное число, a Z, (a, p) = 1. Число p является простым тогда и только тогда, когда

(x − a)p ≡ xp − a (mod p)

(1.3)

(соотношение (1.3) означает, что коэффициенты многочленов сравнимы по модулю p).

Доказательство. Очевидно, что

p−1

pi xi (−a)p−i + a − ap.

(1.4)

(x − a)p (xp − a) = i=1

 

 

 

Если p — простое число, то соотношение (1.3) следует из (1.4), так

как при 1 i p − 1 число

p

делится на p.

i

Пусть соотношение (1.3)

выполнено,

и предположим, что p — со-

ставное. Тогда найдется простое число q и натуральное k такие, что qk p, причем q < p. Очевидно, что qk не делит

q

= p p −

1)

. .q.

!p − q +

1)

,

p

 

(

 

(

 

и поэтому коэффициент при xq в (1.4) не делится на p, что противоречит выполнению (1.3). Теорема доказана.

§ 1.9. Заключение. Детерминированный полиномиальный алгоритм

49

Символом P(m) мы обозначаем наибольший простой делитель на-

турального числа m. Через or (m) мы обозначаем порядок m (mod r) в группе (Z/rZ) .

Лемма 1.72. Пусть p и r — различные простые числа. Тогда

1)для каждого t N группа GF(pt) является циклической;

2)для каждого многочлена f(x) Z [x] выполнено соотношение

 

 

 

 

 

 

 

f(x)p ≡ f(xp) (mod p);

 

3)

если h(x) Z [x], h(x) | xr 1, m1, m2 Z 0, m ≡ mr (mod r), то

 

 

 

 

 

 

 

xm ≡ xmr (mod h(x));

 

4)

если o

(p)

порядок p (mod r)

 

(Z rZ) , то в Z pZ [x] мно-

 

 

x

r

r

 

 

/

/

гочлен

 

1

раскладывается на различные неприводимые мно-

 

 

 

 

x − 1

 

 

 

 

 

 

гочлены, каждый из которых имеет степень or (p).

Доказательство. Первое и второе утверждения леммы общеиз-

вестны.

mr mr

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

kr

 

 

Пусть

,

 

= m + kr,

где

 

 

 

Z

.

 

Поскольку

 

 

 

 

 

 

mkr+mr r

mr

 

 

 

 

k 0

 

 

 

 

 

 

 

 

x

 

1 (mod x − 1), то x

≡ x

 

 

(mod h(x)), что доказывает

третье

утверждение леммы.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xr 1

 

Положим d = or (p). Пусть h(x) — неприводимый делитель

 

 

в Z/pZ [x], deg h(x) = k. Тогда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x − 1

 

 

 

 

 

 

Z/pZ [x]/(h(x)) = GF(pk),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(Z/pZ [x]/(h(x))) = g(x)

 

(mod h(x))

pk1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

где g(xd) — некоторый многочлен из Z/pZ [x]. Очевидно, что g(x)pd

(

p

) (mod h(x)). Поскольку

p

d

1

(mod

) и

 

( )

| x

r

1, то

x

p

≡ g x

 

 

 

 

d

 

r

h x

 

 

 

 

≡ x d(mod

h(x)). Следовательно,

g(x)p

 

≡ g(x)

(mod h(x)),

откуда

g(x)p

1 1 (mod

h(x)). Это означает,

 

что

pk 1 | pd 1, и

поэто-

му k | d.

r

1 (mod h

(x)) в Z/pZ

[x]. Поскольку x

r

1 не имеет крат-

Далее, x

 

 

ных неприводимых делителей в Z/pZ [x], то h(x) = x − 1. Следовательно, порядок x (mod h(x)) равен простому числу r. Это, в свою очередь, означает, что r | pk 1 = |GF(pk) |, т. е. pk 1 (mod r). По определению d тогда d | k.

Из доказанного выше следует, что k = d. Четвертое утверждение леммы доказано.

Следующие две леммы содержат некоторые результаты о распределении простых чисел.

4 О. Н. Василенко

50 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел

Лемма 1.73. Существуют положительная постоянная c0 и натуральное число n0 такие, что для всех x n0 выполнено неравенство

#{p | p — простое, p x, P(p − 1) > x2/3} logc0xx .

Доказательство можно найти в работах [123; 61].

Лемма 1.74. При всех m 2 выполнено неравенство

m

 

(m)

8m

,

6 log

m

log m

2

 

2

 

где (m) — функция Чебышёва. Доказательство см. в [55].

Теперь опишем алгоритм проверки простоты натуральных чисел.

Алгоритм.

На входе задано нечетное число n N, n > 1.

1 шаг. Если n имеет вид ab, где a N, b N, b 2, то выдать сообщение о том, что n составное, и закончить работу. (В работе [64] показано, что этот шаг может быть выполнен за O(log n1+o(1)) арифметических операций.)

2

шаг. r := 2.

 

 

 

 

3

шаг. Для текущего значения r выполнить шаги 4—8.

4

шаг. Если r < n и НОД(r, n) > 1, то n — составное; в этом случае

закончить работу с выдачей сообщения о том, что n — составное.

5

шаг. Если r — простое число, то выполнить шаги 6—7, иначе пе-

рейти на шаг 8.

 

 

 

 

6

шаг. Найти q — наибольший простой делитель числа r − 1.

 

 

 

 

 

r−1

 

 

 

7

 

 

 

 

q

1 (mod r), то перейти к 9 шагу

шаг. Если q 4 r log2 n и n

 

с данным значением r.

 

 

 

 

8

шаг. r := r + 1. Если r n, то выдать сообщение, что n — простое,

и закончить работу. Иначе вернуться на 3 шаг.

9

шаг. 1 случай. Если n − 1

 

log2 n], то для всех a из проме-

[2

r

жутка r < a n − 1 проверить выполнение условия (a, n) = 1.

 

 

 

 

 

 

 

 

 

2

случай. Если n − 1 > [2

r

log2 n], то для всех a из промежутка

1 a [2 r log2 n] проверить выполнение соотношения (x − a)n ≡ xn − a (mod xr 1)

в кольце Z/nZ [x]. Если для некоторого a в 1-м случае выполнено неравенство (a, n) > 1, либо во 2-м случае соотношение по модулю xr 1 не выполняется, то n — составное, и алгоритм заканчивает работу.

§ 1.9. Заключение. Детерминированный полиномиальный алгоритм

51

10 шаг. Если мы дошли до этого шага, то число n — простое.

Конец алгоритма.

Теорема 1.75. Алгоритм верно определяет, является ли число n простым или составным. При этом рассматриваемые в нем значения r не превосходят A log6 n для некоторой абсолютной константы A.

Для доказательства теоремы 1.75 нам потребуется еще несколько лемм.

Лемма 1.76. Существуют абсолютные положительные постоянные c1, c2 такие, что если число n достаточно вели-

ко,

то на отрезке [c1 log26 n; c2 log26 n] найдется простое

чис-

ло

r, удовлетворяющее следующим условиям: либо r | n,

либо

у r − 1 есть простой делитель q, удовлетворяющий неравенству

q 4 r log2 n, такой, что q | or (n) и n(r−1)/q 1 (mod r).

Доказательство. Рассмотрим простые числа r, лежащие на от-

резке [c1 log26 n; c2 log26 n] и удовлетворяющие неравенству

 

P(r − 1) > (c2 log26 n)2/3,

(1.5)

где c1 и c2 — некоторые положительные постоянные, которые мы выберем позже; такие простые числа мы назовем специальными. Их количество не меньше, чем количество простых чисел на отрезке [1; c2 log62 n], удовлетворяющих (1.5), минус количество всех простых чисел на отрезке [1; c1 log62 n]. С помощью лемм 1.73 и 1.74 получим, что количество специальных простых чисел будет не меньше, чем

c0c2 log26 n

8c1 log26 n

 

 

c0c2 log26 n

8c1 log26 n

=

log2 c2 + 6 log2 log2 n

log2 c1 + 6 log2 log2 n

7 log2 log2 n

6 log2 log2 n

 

 

=

log26 n

 

 

c0c2

8c1

= c3

log26 n

 

,

 

 

log2 log2 n

7

6

 

log2 log2 n

если число n достаточно велико. Мы будем считать, что c1 > 46, c2 > c1,

и что c3

> 0. Пусть x = c2 log6 n. Обозначим через Π произведение

 

 

2

 

 

 

 

 

 

2

3

1) . . . (n

[x1/3]

1).

(1.6)

 

Π = (n − 1) (n

1) (n

 

В этом произведении [x1/3] сомножителей, и каждый состоит из произведения не более чем log2 (nx1/3 1) x1/3 log2 n простых чисел. Поэтому Π состоит из произведения не более чем x2/3 log2 n простых. Далее,

x2/3 log

n = c2/3 log5 n < c3

log26 n

 

2

2

2

log2 log2 n

 

 

 

4*

√ √
a 2 r log2 n 2 c2 log42 n < n − 1,

52 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел

при всех достаточно больших n. Значит, хотя бы одно специальное простое r не делит Π. Покажем, что оно будет удовлетворять утвер-

ждению леммы. Пусть r n. Тогда nr−1

1 (mod r). Из (1.5) следует, что

(

1)

2/3

 

 

 

 

 

 

 

такой, что

2/3.

P r −

 

> r

, т. е. r − 1 имеет простой делитель q 6

q > r

Заметим, что

2/3

 

 

 

 

 

 

 

6

r

4 r log2 n, поскольку r c1 log2 n и c1 >

4 . Зна-

чит, q 4

 

log2 n и q2 r − 1. Если q or (n), то n(r−1)/q 1

(mod r),

r

r | n(r−1)/q 1. Покажем, что

r −q

1

[x1/3]. Действительно, r − 1 x1/3q,

так как выполнено даже более сильное неравенство

r x1/3r2/3,

поскольку r x = c2 log62 n. Из доказанного следует, что r | Π, но это противоречит выбору r. Итак, q | or (n) и n(r−1)/q 1 (mod r). Лемма доказана.

Замечание 1.77. Из леммы 1.76 следует, что если n достаточно велико, то на 3 шаге алгоритма либо обнаружится, что n составное, либо найдется простое число r, r c2 log62 n, такое, что у r − 1 есть простой делитель q, удовлетворяющий условиям 7 шага.

Лемма 1.78. Если число n — простое, то алгоритм закончит работу с выдачей сообщения о том, что n — простое.

Доказательство. Если n не очень велико, то алгоритм может просто перебрать все значения r < n и на 8 шаге при r = n выдать сообщение о том, что n — простое; либо мы перейдем к 9 шагу с некоторым значением r и (по теореме 1.71) тесты 9 шага будут выполнены для всех рассматриваемых a, вследствие чего алгоритм выдаст сообщение о том, что n — простое.

Предположим теперь, что n достаточно велико. Тогда по лемме 1.76 на 3 шаге алгоритма обнаружится простое число r такое, что r c2 log62 n < n, причем r − 1 имеет простой делитель q, удовлетворяющий условиям 7 шага. На 9 шаге соотношение по модулю xr 1 будет выполнено (по теореме 1.71) для всех рассматриваемых значений a, так как

если n достаточно велико. Значит, мы дойдем до 10 шага, и алгоритм выдаст сообщение о простоте n.

Теперь предположим, что n— составное число. Пусть n = p1 . . . pk — разложение n на простые множители (не обязательно различные). Допустим, что в ходе перебора значений r на 3 шаге мы не обнаружили, что n составное, нашли простые числа r и q, удовлетворяющие условиям 6 и 7 шагов и перешли к 9 шагу. Поскольку q | or (n)

в кольце Z/pZ [x] раз-
(x − a) a

§ 1.9. Заключение. Детерминированный полиномиальный алгоритм

53

и or (n) | НОК(or (pi)), то существует простое число p, делящее n, такое,

i

что q | or (p). Зафиксируем это p.

Положим l = [2 r log2 n], и пусть l < n − 1. На 9 шаге мы перебираем значения a, 1 a l. По п. 4 леммы 1.72 в Z/pZ [x] существует неприводимый многочлен h(x), делящий xr 1, причем deg h(x) = d = or (p) 2 (так как q делит d). Если соотношение по модулю xr 1 на 9 шаге для какого-то конкретного a будет выполнено, то будет выполнено и соотношение

 

 

 

 

(x − a)n ≡ xn − a (mod h(x))

(1.7)

в

кольце

[

 

], т. е.

(

)n

= x

n

− a в поле (Z/pZ [x])/(h(x)) =

d

Z/pZ x

 

x − a

 

= GF(p ). При этих предположениях и обозначениях докажем лем-

мы 1.791.81.

 

 

 

 

 

 

 

G

 

Лемма

1.79. Рассмотрим

мультипликативную группу

((Z/pZ [x])/(h(x))) ,

(mod h(x)) | a Z 0, a = 1, . . . , l ,

 

 

G = a=1

(x − a) a

 

 

 

l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a = 1, . .l. , l. Эта группа являет-

порожденную биномами x − a,

ся циклической. Кроме того, |G| > (d/l) , если алгоритм доходит

до 9-го шага и l < n − 1.

 

 

 

 

 

x −

 

Доказательство. Поскольку deg h(x) 2, то элементы

−a (mod h(x)) имеют конечный порядок в ((Z/pZ [x])/(h(x))) , и G является группой. Так как G — подгруппа циклической группы GF(pd) , то она тоже является циклической.

Покажем, что элементы подмножества

S =

l

(x − a) a (mod h(x))

l

a d − 1

a=1

a=1

 

 

 

 

 

 

 

 

 

 

группы G различны в (Z/pZ [x])/(h(x)), если

алгоритм дошел до вы-

полнения 9 шага и l < n − 1. На 9 шаге будет проверяться условие 2 случая и r > q 4 r log2 n 2l. При этом рассматриваемые значения a различны по модулю p, так как если a1 ≡ a2 (mod p), a1 < a2, то p a2 − a1 < l < r, и тогда мы бы уже на 4-м шаге для значения r1 = p < r обнаружили, что n — составное. Итак, величины a (mod p)

l

различны. Поэтому многочлены

a=1

личны, а так как l a d − 1 < deg h(x), то и элементы множества S

a=1

найдется не бо-

54 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел

различны в (Z/pZ [x])/(h(x)). Поскольку в множестве S содержится

 

l + d − 1

элементов и

 

 

l + d − 1

>

 

d

 

l, то

G

 

 

( )l.

 

 

 

 

 

l

 

 

 

 

.

 

 

 

 

 

 

 

 

 

S > d/l

 

l

 

 

 

 

 

lвыполнения

9 шага,| |причем| |

 

1. Так

 

 

 

 

 

l < n

 

 

Пусть алгоритм дошел до

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r log2 n 2l, то d 2l и

 

 

 

 

 

 

как d = or (n) . q, q

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|G| > 2l =

2[2

 

r

log2 n] > 22

 

r

log2 n−1

= n2

r

/2.

 

 

(1.8)

Пусть g(x) образующий циклической группы G. Его порядок будет

больше n2 r/2. Положим

Ig(x) = {m | m Z 0, g(x)m ≡ g(xm) (mod xr 1) в кольце Z/pZ [x]}.

Лемма 1.80. Множество Ig(x) замкнуто относительно умножения.

Доказательство. Пусть m1, m2 Ig(x) . Тогда в кольце Z/pZ [x] выполнены сравнения

g(x)m1 ≡ g(xm1) (mod xr 1), g(x)m2 ≡ g(xm2) (mod xr 1). Подставим xm1 вместо x во второе сравнение. Тогда

g(xm1)m2 ≡ g(xm1m2) (mod xrm1 1),

откуда

g(xm1)m2 ≡ g(xm1m2) (mod xr 1).

Поэтому

g(x)m1m2 (g(x)m1)m2 (g(xm1))m2 ≡ g(xm1m2) (mod xr 1),

т. е. m1m2 Ig(x) .

Лемма 1.81. Пусть og — порядок g(x) в Z/pZ [x]/(h(x)). Пусть m1, m2 Ig(x) . Тогда из сравнения m1 ≡ m2 (mod r) следует, что

m1 ≡ m2 (mod og).

Доказательство. Пусть m2 > m1. Тогда m2 = m1 + kr, где k Z 0. Так как в кольце Z/pZ [x] выполнено соотношение g(x)m2 ≡ g(xm2) (mod xr 1) и h(x) | xr 1, то g(x)m2 ≡ g(xm2) (mod h(x)). Отсюда

g(x)m1 g(x)kr ≡ g(xm1+kr) ≡ g(xm1) (mod h(x)).

Так как m1 Ig(x) , то получаем, что g(x)kr 1 (mod h(x)), т. е. kr ≡ ≡ 0 (mod og). Из этого следует утверждение леммы.

Замечание 1.82. Из леммы 1.81 вытекает, что в Ig(x) лее чем r чисел, меньших og.

Лемма 1.83. Если число n — составное, то алгоритм закончит работу с выдачей сообщения о том, что n — составное.

§ 1.9. Заключение. Детерминированный полиномиальный алгоритм

55

Доказательство. Предположим, алгоритм выдал сообщение, что n — простое. Это не может произойти на шаге 8, так как тогда мы проверили бы условия шага 4 для всех r < n и нашли бы делитель n.

Поэтому алгоритм дошел до шага 10. Значит, был выполнен шаг 9.

Если n − 1 [2 r log2 n], то на шаге 9 мы бы обнаружили a, a n − 1,

такое, что (a, n) > 1, и алгоритм сообщил бы, что n составное. Значит,

 

log2 n] < n − 1, и для всех a, 1 a [2

 

log2 n] = l, выполнено

[2

r

 

r

соотношение:

 

 

 

 

 

 

(x − a)n ≡ xn − a (mod xr 1)

в Z/pZ [x].

(1.9)

Тогда в обозначениях лемм 1.80 и 1.81 (где g(x) — по-прежнему образующий элемент группы G) получим, что

g(x)n ≡ g(xn) (mod xr 1) в Z/pZ [x],

поскольку g(x) есть произведение биномов x − a, для которых выполнено (1.9). Значит, n Ig(x) . Также по п. 2 леммы 1.72 p Ig(x) ; кроме

того, 1 Ig(x) .

 

 

 

 

 

i

j

| 0

 

 

. По лемме 1.80

 

 

 

 

 

 

Рассмотрим множество E =

n p

 

i, j [ r]

 

|

|

2

 

 

 

две различные пары

E Ig(x) . Так как

E = ([ r] + 1) > r, то найдутся

 

 

 

(i1, j1), (i2, j2), такие, что ni1 pj1

≡ ni2 pj2

(mod r). Тогда по лемме 1.81

ni1 pj1 ≡ ni2 pj2

(mod og). Так как og делит pd 1 = |(Z/pZ [x]/(h(x))) |,

то p og, и элемент p (mod og) обратим в Z/ogZ. Не ограничивая общности, будем считать, что j2 j1. Тогда

ni1

≡ ni2 pj2−j1

(mod og).

(1.10)

Поскольку 3 p n/3, справедливы неравенства

 

i1

 

 

 

[

 

 

]

 

 

 

2

 

 

 

 

 

 

 

 

 

n

r

 

r

 

r

/2,

 

 

 

n

 

 

 

 

 

n

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

[

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

r

]

 

 

n2[

r

]

 

 

 

 

ni2 pj2−j1 n[r]

 

 

=

n2r/2.

 

 

 

 

 

3[

 

]

 

 

3

 

 

 

 

 

 

 

 

 

r

 

 

Из (1.10) и (1.8) следует теперь, что

ni1 = ni2 pj2−j1 . (1.11)

Поскольку p — простой делитель натурального числа n, то из (1.11) вытекает, что составное число n является степенью p. (Действительно, если у числа n есть простой делитель s, s = p, то из (1.11) следует, что i1 = i2. Но тогда и j1 = j2, что противоречит условию (i1, j1) = (i2, j2).) Однако такие составные числа мы обнаруживаем уже на шаге 1 алгоритма. Полученное противоречие доказывает лемму.

Теперь докажем теорему 1.75. Корректность работы алгоритма следует из лемм 1.78 и 1.83. Неравенство r A log6 n для небольших

56 Гл. 1. Тестирование чисел на простоту и построение больших простых чисел

значений n обеспечивается за счет выбора постоянной A, а для всех достаточно больших n в силу леммы 1.76 можно рассматривать rc2 log62 n. Теорема 1.75 полностью доказана.

Оценим количество арифметических операций, требуемых для выполнения алгоритма.

Теорема 1.84. Количество арифметических операций, необхо-

12

димых для выполнения алгоритма, равно O(log n).

Доказательство. Можно считать, что n достаточно велико. Шаг 1 алгоритма выполняется за O((log n)1+o(1)) арифметических операций,

согласно [64]. Количество значений r, рассматриваемых на шаге 3, по лемме 1.76 не превосходит c2 log62 n. Для каждого r шаг 4 выпол-

няется за O(log n) арифметических операций, а шаги 5 и 6 с помо-

1/2 const = 3

щью решета Эратосфена выполняются за O(r (log r) ) O(log n). Шаг 7 выполняется за O(log r) = O(log log n) операций, шаг 8 тривиа-

лен. На шаге 9 (в силу того, что n достаточно велико) будет проверяться условие 2 случая. При этом проверка соотношения

(x − a)n ≡ xn − a (mod xr 1)

в

кольце

Z/pZ [x] составляет

с

помощью

бинарного

возведения

в

степень

(см.

Приложение)

и

быстрого

преобразования

Фурье

(см. гл.

9)

O(log n · r log n) операций. Поэтому 9 шаг будет

выпол-

нен за

 

 

 

2

 

12

 

 

 

-

 

 

 

 

O(2 r log n · r log n) = O(log n) арифметических

операций.

Таким образом, теорема доказана.

 

 

 

 

 

Замечание

1.85. Проверка

соотношения

2 случая 9

шага ал

 

горитма может производиться и без быстрого преобразования Фурье. Оценка сложности останется полиномиальной, но несколько худшей.

Замечание 1.86. В работе [50] показано, что если выполнена некоторая гипотеза о распределении простых чисел Софи Жермен, т. е. пар простых чисел q и p = 2q + 1, то можно предложить алгоритм проверки

6

простоты чисел со сложностью O(log n). В предположении справедливости некоторой другой гипотезы можно описать алгоритм проверки

3

простоты чисел со сложностью O(log n).

Замечание 1.87. Пока не совсем ясно, будет ли описанный выше алгоритм эффективен на практике. Двенадцатая степень логарифма n в оценке сложности — это все же довольно много. Кроме того, значение параметра r в алгоритме теоретически может иметь величину порядка log6 n, и поэтому нам придется работать с многочленами высоких степеней. Результаты практической реализации данного алгоритма пока неизвестны.