ТЕСТ СОЛОВЕЯШТРАССЕНА САЗОНОВ ИВАН М 15 -ИСТ-1
ТЕСТ СОЛОВЕЯ — ШТРАССЕНА Тест Соловея — Штрассена — вероятностный тест простоты, открытый в 1970 -х годах Робертом Мартином Соловеем совместно с Фолькером Штрассеном. Тест всегда корректно определяет, что простое число является простым, но для составных чисел с некоторой вероятностью он может дать неверный ответ. Основное преимущество теста заключается в том, что он, в отличие от теста Ферма, распознает числа Кармайкла как составные.
ОБОСНОВАНИЕ Тест Соловея — Штрассена опирается на малую теорему Ферма и свойства символа Якоби: Если n — нечетное составное число, то количество целых чисел a, взаимнопростых с n и меньших n, удовлетворяющих сравнению не превосходит . Составные числа n удовлетворяющие этому сравнению называются псевдопростыми Эйлера -Якоби по основанию a.
АЛГОРИТМ Алгоритм Соловея — Штрассена параметризуется количеством раундов k. В каждом раунде случайным образом выбирается число a < n. Если НОД(a, n) > 1, то выносится решение, что n составное. Иначе проверяется справедливость сравнения . Если оно не выполняется, то выносится решение, что n — составное. Если это сравнение выполняется, то a является свидетелем простоты числа n. Далее выбирается другое случайное a и процедура повторяется. После нахождения k свидетелей простоты в k раундах выносится заключение, что n является простым числом с вероятность .
ПРИМЕР Проверим число n = 19 на простоту. Выберем параметр точности k = 2. k=1 Выберем случайное число a = 11; 2 < a < n – 1 Проверим условие НОД(a, n)>1 НОД(11, 19)=1; значит проверяем выполнение сравнения Получили, что r = s, поэтому переходим к следующей итерации.
ПРИМЕР k=2 Выберем случайное число a = 5; 2 < a < n - 1 Проверим условие НОД(a, n)>1 НОД(5, 19)=1; значит проверяем выполнение сравнения и это была последняя итерация, отсюда делаем вывод, что 19 - простое число с вероятностью 1 -2^(-2) = 0. 75
ВЫЧИСЛИТЕЛЬНАЯ СЛОЖНОСТЬ И ТОЧНОСТЬ На каждой итерации алгоритма составное число может быть распознано с вероятностью не менее 1 / 2. После k независимых итераций, эта вероятность составляет 2 − k. Эта степень надежности теста иногда признается неудовлетворительной, так как, например, более новый достигает вероятности ошибки не более 4 − k после k итераций алгоритма. Алгоритм требует O(klog 2 n) операций над длинными целыми чис лами.