Тест Соловея — Штрассена
— вероятностный
тест простоты
, открытый в 1970-х годах
Робертом Мартином Соловеем
совместно с Фолькером Штрассеном.
Тест всегда корректно определяет, что
простое число
является простым, но для составных чисел с некоторой вероятностью он может дать неверный ответ. Основное преимущество теста заключается в том, что он, в отличие от
теста Ферма
, распознает
числа Кармайкла
как составные.
История
В 17 веке Ферма доказал утверждение, названное позже
малой теоремой Ферма
, служащее основой
теста Ферма
на простоту:
-
Если
n
— простое и
a
не делится на
n
, то
.
Эта проверка для заданного
n
не требует больших вычислений, однако утверждение, обратное этому, неверно. Так, существуют числа Кармайкла, являющиеся составными, для которых утверждение, приведенное в малой теореме Ферма, выполняется для всех целых чисел взаимнопростых с заданным числом. В 1994 году было показано, что таких чисел бесконечно много.
В связи с обнаруженным недостатком теста Ферма, актуальность приобрела задача увеличения достоверности вероятностных тестов. Первым тест, отсеивающий числа Кармайкла как составные, предложил Леманн. Этот недостаток отсутствует также в тестах Соловея — Штрассена и Миллера — Рабина за счет более сильного критерия отсева, чем малая теорема Ферма.
Независимо от друг друга Д. Лемер в 1976 году и Р. Соловей совместно с Ф. Штрассеном в 1977 году доказали, что аналога чисел Кармайкла, которые являются составными и одновременно эйлеровыми псевдопростыми, нет.
На основе этого и был предложен тест Соловея — Штрассена на простоту, он был опубликован в 1977 году, дополнения к нему в 1978 году.
Обоснование
Тест Соловея — Штрассена опирается на малую теорему Ферма и свойства
символа Якоби
:
-
Если
n
— нечетное
составное число
, то количество целых чисел
a
, взаимнопростых с
n
и меньших
n
, удовлетворяющих
сравнению
, не превосходит
.
Составные числа
n
удовлетворяющие этому сравнению называются
псевдопростыми Эйлера-Якоби
по основанию
a
.
Доказательство
-
Докажем, что выполнения сравнения
необходимо и достаточно для того, чтобы число
n
было простым.
Необходимость следует из критерия Эйлера для символа Лежандра.
Для доказательства достаточности воспользуемся методом от противного.
Предположим, что n — составное и при этом для выполнено сравнение
Отсюда следует
Получаем, что n— число Кармайкла, поэтому где - простое i = 1,2, ...k
Рассмотрим b такое, что
Найдем такое a , что :
Такое а существует по китайской теореме об остатках и принадлежит , так как является взаимно простым с n.
Отсюда
противоречие с тем, что
Значит неверно наше предположение о том, что n - составное.
-
Доказательство того, что количество таких чисел не превосходит n/2 можно найти в любом пособии по теоретико-числовым алгоритмам.
Алгоритм Соловея — Штрассена
Алгоритм Соловея — Штрассена
параметризуется количеством раундов
k
. В каждом раунде случайным образом выбирается число
a
<
n
. Если
НОД
(
a
,
n
) > 1, то выносится решение, что
n
составное. Иначе проверяется справедливость сравнения
. Если оно не выполняется, то выносится решение, что
n
— составное. Если это сравнение выполняется, то
a
является свидетелем простоты числа
n
. Далее выбирается другое случайное
a
и процедура повторяется. После нахождения
k
свидетелей простоты в
k
раундах выносится заключение, что
n
является простым числом с вероятностью
.
На
псевдокоде
алгоритм может быть записан следующим образом:
Вход: > 2, тестируемое нечётное натуральное число;
, параметр, определяющий точность теста.
Выход: составное, означает, что точно составное;
вероятно простое, означает, что вероятно является простым.
for i = 1, 2, ..., :
= случайное целое от 2 до , включительно;
если НОД(a, n) > 1, тогда:
вывести, что — составное, и остановиться.
если , тогда:
вывести, что — составное, и остановиться.
иначе вывести, что — простое с вероятностью , и остановиться.
Пример применения алгоритма
Проверим число
n
= 19 на простоту. Выберем параметр точности k = 2.
k = 1
Выберем случайное число a = 11; 2 < a < n - 1
Проверим условие НОД(a,n)>1
НОД(11,19)=1; значит проверяем выполнение сравнения
Получили, что поэтому переходим к следующей итерации
k = 2
Выберем случайное число a = 5; 2 < a < n - 1
Проверим условие НОД(a,n)>1
НОД(5,19)=1; значит проверяем выполнение сравнения
и это была последняя итерация, отсюда делаем вывод, что 19 - простое число с вероятностью
Вычислительная сложность и точность
-
Точность по сравнению с другими вероятностными тестами на простоту (здесь
k
— число независимых раундов)
название теста
|
вероятность(
что число составное
)
|
примечания
|
Ферма
|
|
не распознает числа Кармайкла как составные
|
Леманна
|
|
Соловея — Штрассена
|
|
-
Теоретическая сложность вычислений всех приведенных в таблице тестов оценивается как
.
-
Алгоритм требует
операций над
длинными целыми числами
.
-
При реализации алгоритма, для снижения вычислительной сложности, числа
a
выбираются из интервала 0 <
a
<
c
<
n
, где
c
— константа равная максимально возможному значению натурального числа, помещающегося в одном регистре процессора.
Применение
Вероятностные тесты применяются в системах основанных на проблеме
факторизации
, например
RSA
или
схема Рабина
. Однако на практике степень достоверности теста Соловея — Штрассена не является достаточной, вместо него используется
тест Миллера — Рабина
.
Более того, используются объединенные алгоритмы, например
пробное деление
и тест Миллера — Рабина, при правильном выборе параметров можно получить результаты лучше, чем при применении каждого теста по отдельности.
Улучшение теста
В 2005 году на Международной конференции Bit+ «Informational Technologies −2005» А. А. Балабанов, А. Ф. Агафонов, В. А. Рыку предложили модернизированный тест Соловея — Штрассена.
Тест Соловея — Штрассена основан на вычислении символа Якоби, что занимает время эквивалентное
. Идея улучшения состоит в том, чтобы в соответствии с
теоремой квадратичной взаимности Гаусса
, перейти к вычислению величины
,являющейся обратной символу Якоби, что является более простой процедурой.
.
См. также
Примечания
-
↑
Solovay, Robert M. and Volker Strassen.
A fast Monte-Carlo test for primality
(англ.)
//
(англ.)
(
: journal. — 1977, submitted in 1974. —
Vol. 6
,
no. 1
. —
P. 84—85
. —
doi
:
.
-
W. R. Alford, A. Granville, C. Pomerance.
(англ.)
//
Annals of Mathematics
: journal. — 1994. —
Vol. 139
. —
P. 703—722
. —
doi
:
.
4 мая 2012 года.
-
↑
, с. 48.
-
↑
, с. 82.
-
Н.Ю. Золотых
. Лекции по компьютерной алгебре.
от 4 ноября 2014 на
Wayback Machine
-
↑
, с. 84.
-
↑
Б. Шнайер
Прикладная криптография — М. : ТРИУМФ, 2002 . — Глава 11.
-
Балабанов А. А.,Агафонов А. Ф.,Рыку В. А.
от 5 ноября 2014 на
Wayback Machine
— Вестник научно-технического развития, 2009 № 7(23). — С. 11.
Литература
-
Коблиц Н.
. — 2-ое. —
М.
: Научное издательство ТВП, 2001. — С. 149—160. — 254 с. —
ISBN 5-94057-103-4
.
-
Нестеренко А.
. — 2011. — С. 79—90. — 190 с. —
ISBN 978-5-94506-320-4
.
-
Черемушкин А. В.
. —
М.
:
МЦНМО
, 2001. — С. 42—59. — 104 с. —
ISBN 5-94057-060-7
.
от 31 мая 2013 на
Wayback Machine
-
Саломаа А.
/ Пер. с англ. И.А. Вихлянцева. —
М.
: Мир, 1995. — С. 176—184. — 318 с. —
ISBN 5-03-001991-X
.
от 19 ноября 2011 на
Wayback Machine