Lecture_10
.pdfПо теореме Рабина у нечётных составных чисел p существует, не более ( )/4 свидетелей простоты, где ( ) - функция Эйлера, а вероятность того, что случайно выбранное число a окажется свидетелем простоты не менее 3 4
Идея теста заключается в том, чтобы проверять для случайно выбранных чисел a<p, являются ли они свидетелями простоты числа p. Если на определённом шаге алгоритма было проверено k чисел, и все они оказались свидетелями простоты, то вероятность того, что число p составное не более (1 4)
Сегодня один из самых популярных тестов простоты чисел — комбинация теории делимости и теста Миллера-Рабина. При этом рекомендуются следующее шаги:
Выбрать нечетное целое число, потому что все четные целые числа (кроме 2) — явно составные
Сделать некоторые тривиальные испытания теории делимости на некоторых известных простых числах, таких как 3, 5, 7, 11, 13: так, чтобы убедиться, что вы не имеете дело с очевидным составным объектом. Если они не являются делителями при всех этих испытаниях, сделайте следующий шаг. Если выбранное число не прошло хотя бы один из этих тестов, вернитесь на один шаг и выберите другое нечетное число.
Выбрать набор оснований для теста. Большое множество оснований предпочтительно.
Сделать тест Миллера-Рабина на каждом из оснований. Если любой из них не проходит, вернитесь на один шаг и выберите другое нечетное число. Если тесты прошли для всех оснований, объявите это число, как сильное псевдопростое число.
В основе детерминированного алгоритма тоже лежит математически доказанное свойство простого числа
Проверяется выполнение этого свойства , как достаточного условия
«простоты» числа: ЕСЛИ свойство ТО число простое
Если проверяемое целое число фактически является простым число, алгоритм объявит его простым
Если проверяемое целое число фактически является составным , алгоритм объявляет его составным
Используем в качестве делителей все числа, меньшие, чем √.
Если любое из этих чисел делит n, тогда n — составное
Алгоритм может быть улучшен, если проверять только нечетные номера и использовать таблицу простых чисел от 2 до √
Сложность разрядной операции алгоритма 2 /2, где число битов в n
Теорема: Пусть p – целое нечетное число, p>1. Число p является простым, если существует ≤ − 1, такое, что :
−1 = 1
−1 ≠ 1 для каждого простого делителя числа p-1
Алгоритм:
Случайным образом выбираются простые числа { 1, 2,… }
Вычисляем = 1 + 2 |
|
|
|
|
|
=1 |
|
|
|
Выбирается ≤ − 1 и проверяются условия Теоремы. |
Если есть такое , то |
|||
найдено, если нет, то выбирается новые { , ,… } |
|
|||
|
|
1 2 |
|
|
Свойства решения:
Длина примерно в h раз больше средней длины { 1, 2,… } Мы заранее знаем разложение p-1
Теорема: Пусть = + 1, где q- нечетное простое число, N – четное
число и < (2 + 1) 2. Число p является простым, если 2 = 1 и 2 ≠ 1
Алгоритм формирования числа p длины t≥ 17 бит:
Построим убывающий набор натуральных чисел 0, 1, … , , в котором 0= и< 17 бит, таким образом, что = [ 2−1]
Последовательно генерируются простые числа , −1, … , 0: −1 = + 1
формируется случайным выбором числа размером менее 17 бит и проверки на простоту методом пробного деления
N – случайное целое число, такое что длина числа −1 = + 1 равна значению −1
Число −1 считается полученным, если 2 = 1 −1 и 2 ≠ 1 −1
Если одно из условий не выполнено, то N увеличивается на 2 и вычисляется новое −1 и так до получения простого числа −1
В 2002 г. индийские ученые Агравал, Каял и Сахсена (Agrawal, Kayal и Saxena) объявили, что они нашли алгоритм для испытания простоты чисел с полиномиальной сложностью времени разрядных операций
В основе этого теста на простоту лежит доказанное тождество:
Пусть НОД , ≡ 1. Число n является простым тогда, и только тогда, когда ( − ) ≡ −
Пусть ≥ 2; − целое; , − простые числа, причем :
, где ≡ 2
Тогда − простое число