Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Лекция 2 - Математический базис КП.pptx
Скачиваний:
0
Добавлен:
04.06.2026
Размер:
1.39 Mб
Скачать

Примеры

n=7, x=1 найти mod7=? Перебором находим

=1mod7

=4mod7

=2mod7

=1mod7

=4mod 7 =2mod7 mod7=1 или -1

n=8, x=1 найти Перебором находим =1mod8

=4mod8

=1mod8

=0mod8

=1mod8

=4mod8

=1mod8

=1mod8==1mod8

корни: +1,-1, 3, 5,

Но с другой стороны не факт, что при не простом n будут дополнительные корни, см. пример

n=22, x=1 найти Перебором находим =1mod22

=1mod22

И все, других корней нет!

Тест Миллера-Рабина - комбинация теста Ферма и квадратного корня

Запишем n-1= r

Тест Ферма при основании a можно записать===

=(((…

k раз

Идея алгоритма РМ

1шаг. Выбрать a такое, что НОД(a,n)=1 Проверить=

2 шаг Положить i=1. Найти

=

Когда i=k-1, перейти к шагу 1 , выбрав новое a.

Если T2=1, то 1 T Но, это означает Т не простое

Итог

1.Представить n - 1 в виде 2s r , где r – нечетное число.

2.Сгенерировать случайное число a, такое что 2 a n 1.

3.Вычислить y = ar mod n:

y 1

а) если , то n прошло тест и возможно является простым (повторяем этот тест для другого случайно выбранного числа a);

б) если y, то 1вычисляются y2 mod n, y4 mod n, y2j для j < s до тех пор, пока не получится -1 для некоторого j. Если такое событие происходит, повторить тест для следующего a.

4. Если ни при каких j не выполняется шаг 3б, то число n – составное и отбрасывается как не прошедшее тест.

.

Доказывается [2, 3], что вероятность ошибки при использовании теста Миллера–Рабина аппроксимируется величиной 1/4t . Видно, что этот показатель значительно лучше, чем для теста Ферма, и все операции, необходимые для проведения этого теста, имеют полиномиальную сложность.

Полиномиальный тест AKS

Предложен в 2002г. индийскими математиками Agrawal M., Kayal N., Saxena N.

Центральная идея опирается на следующий факт. Натуральное n при условии НОД(a,n)=1, является простым в том случае, когда

)modn (1)

Когда n простое n

(x a)n Cnk xk ( a)n k mod n (xn an )modn

i 0

(xn a an 1) mod n (xn a 1) mod n

Если же n составное n=psq и q не делится на p, то не делится на n и (1) нарушается.

При непосредственной проверке этого равенства требуется вычислить значения всех (п —2) коэффициентов. Поэтому в алгоритме вместо сравнения (1) рассматриваются сравнения (по двум модулям) вида

) (modn, mod( , (2)

где значения а и г подбираются специальным образом: сначала ищется «подходящее» значение г, а затем для него проверяется сравнение (2) для всех «малых» значений a.

Равенство (2) означает существование такого полинома q(x) Z[x] , что все коэффициенты полинома

) - q(x) ( кратны n.

Доказано, что сложность алгоритма довольно высока поэтому практической ценности алгоритм пока не имеет.

5.2. Конструирование простых чисел

Доказуемо простые числа большего размера на основе простых чисел меньшего размера можно строить, используя теорему Н. Диемитко.

Теорема Диемитко (1988г.)

Пусть n=qR+1, где q – простое число, R – четное, R<4(q+1). Если найдется a<n такое, что

1) an—1≡1(mod n);

n 1

2) a q 1(mod n ) , то n – простое число.

Итак, если имеем простое число q, то, перебирая четные числа R,

строим число n=qR+1 и испытываем его на простоту согласно теореме Диемитко, пока не получим простое число. По полученному числу можно построить еще одно простое число и т.д.

Пример. q=5, выберем R<4*6=24. Пусть R=14, тогда n=5*14+1=71.

Проверяем условия: пусть а=2, тогда 270 mod 71 1 и

270 / 5 214 mod 71 54 1

Условия выполняются n=71 –простое число,

 

Дальше, положив q=71, можно получить новое простое число и.т.д. Этот алгоритм исаользуется в стандарте ЦП Р 34.10-2001г.