Лучшие вопросы
Таймлайн
Чат
Перспективы
Тест Адлемана — Померанса — Румели
Из Википедии, свободной энциклопедии
Remove ads
Тест Адлемана-Померанса-Румели (или Адлемана-Померанца-Румели, тест APR) — наиболее[1] эффективный, детерминированный и безусловный на сегодняшний день тест простоты чисел, разработанный в 1983 году. Назван в честь его исследователей — Леонарда Адлемана, Карла Померанса и Роберта Румели[англ.]. Алгоритм содержит арифметику в цикломатических полях.
Впоследствии алгоритм был улучшен Генри Коэном[англ.] и Хендриком Ленстрой до APR-CL, время работы которого для любого числа можно вычислить как , где — некоторая вычисляемая константа.
Remove ads
История
До 1980 года у всех известных алгоритмов проверки на простоту, за исключением вероятностных и недоказанных, временная сложность алгоритма была экспоненциальной. Однако в 1983 г. был разработан алгоритм, лежащий вблизи P-класса. Строго говоря, алгоритм не относится к этому классу, однако медленно растущая сложность позволяет практическое использование алгоритма.
К примеру, для числа — гуголплекс,
Старая шутка гласит:
"Доказано, что стремится к бесконечности, но никто никогда не видел, как он это делает."Иэн Стюарт
Remove ads
Ключевые понятия
Суммиров вкратце
Перспектива
Евклидово простое число
Пусть имеется некоторое конечное множество простых чисел. Если для некоторого простого числа выполнены следующие условия:
- — свободное от квадратов число
- все простые делители принадлежат множеству
тогда называется евклидовым простым числом относительно множества .
Набор «начальных» простых чисел
Для заданного числа построим множество такое, что произведение всех евклидовых простых чисел относительно этого множества будет больше . Выберем наименьшее возможное .
Элементы из этого множества назовем набором «начальных» простых чисел.
Indq(x)
Введем некоторое число . Пусть — его первообразный корень. Тогда должно выполняться следующее условие:
,
где .
Замечание: В качестве выбираем наименьшее неотрицательное число.
Сумма Якоби
Суммой Якоби называют сумму следующего вида:
,
где суммирование идет по всем наборам классов смежности для в , кроме тех, что равны .
Remove ads
Ключевые леммы
Суммиров вкратце
Перспектива
Основные леммы[2], используемые при доказательстве корректности алгоритма:
Лемма 2.
Пусть и имеет порядок в группе . Возьмем . Так же где — многочлен в для каждого . Будем считать, что идеалы Если является простым делителем , тогда в :
и каждое , делимое на некоторый простой идеал из , лежит надЛемма 4.
Если , тогда
Лемма 5.
Выберем такие, что . Для положим: то есть или .
ТогдаЛемма 7.
Если , то существуют такие что и
где — обратный элемент кЛемма (Извлечения).
Пусть — идеалы в такие, что и пусть сопряженные простые идеалы, делящие соответственно. Пускай существует такое что . Тогда для любого выполняется:
и следовательно
Remove ads
Идея алгоритма
Если является составным числом, то оно имеет некий делитель . Для проверки на простоту ищем это .
Если нам известны значения для каждой пары , то по китайской теореме об остатках мы можем найти . Каждая пара выбирается следующим образом: , а — простое евклидово число относительно такое, что
В алгоритме перебираются все возможные значения для всех , исходя из того, что известно только одно
Remove ads
Алгоритм
- Ввод: целое число n > 1.
A. Шаг подготовки
1. Вычисляем наименьшее положительное число свободное от квадратов, такое что: .
Определим множество «начальных» простых чисел, являющиеся делителями . Назовем евклидовым простым числом, если простое и
2. Проверим — делится ли на любое «начальное» или евклидово простое число. Если делитель найдется, причем не равный , то объявляем составным и прерываем алгоритм. Иначе вычислим наименьший положительный первообразный корень для каждого евклидового простого числа .
3. Для каждого «начального» простого числа найдем числа такие, что:
,
,
Для примем .
4. Для каждого «начального» и евклидового простых чисел, таких что зафиксируем простой идеал:
,
где принадлежит ,а — корень из единицы.
Вычислим сумму Якоби
если ,
если
B. Шаг вычислений
1. Для каждого «начального» простого числа найдем НОД в для и набора , где пробегает все значения евклидовых простых чисел, причем , а пробегает по всем значениям из Gal. Тогда либо выносим решение о том, что составное, либо строим надлежащий идеал в кольце , а также находим числа и , такие, что:
,
или некоторое из , где
2. Для каждого «начального» простого числа сделаем следующее: если для некоторого , тогда возьмем . В этом ключе построим числа для всех , и такие, что:
Если же для всех , примем .
C. Шаг объединения результатов
Проделаем шаги 1-4 для всех натуральных
1. Для каждого вычислим по китайской теореме об остатках вычислим числа :
при всевозможных , что . Так же положим, что
2. Для каждого посчитаем наименьшее целое, положительное число
3. Используя Китайскую теорему об остатках, вычислим наименьшее положительное число такое, что для каждого
4. Если , тогда объявляем составным. Иначе переходим к следующему
5. Объявляем простым.
Remove ads
Оценка сложности
Суммиров вкратце
Перспектива
Оценка времени выполнения алгоритма вытекает из следующих теорем[2]:
Теорема 1.
Для значений вышеупомянутый алгоритм правильно определяет будет ли простым или составным за время . И справедливы следующие оценки: для простых
для всех значения Где — положительная, вычисляемая константа.Теорема 2.
Существуют такие положительные, вычисляемые константы , что для всех
Remove ads
Программная реализация
- В UBASIC[англ.] приведена реализация алгоритма под именем APRT-CLE (APR Test CL extended)
- factoring applet использует алгоритм APR-CL с определёнными условиями
- Pari/GP условное использование APR-CL в реализации isprime().
- mpz_aprcl реализация с открытым исходным кодом. Использует C + GMP.
Примечания
Список литературы
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads