Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Тест Адлемана — Померанса — Румели

Из Википедии — свободной энциклопедии

Тест Адлемана-Померанса-Румели (или Адлемана-Померанца-Румели, тест APR) — наиболее[1] эффективный, детерминированный и безусловный на сегодняшний день тест простоты чисел, разработанный в 1983 году. Назван в честь его исследователей — Леонарда Адлемана, Карла Померанса и Роберта Румели[en]. Алгоритм содержит арифметику в цикломатических полях.

Впоследствии алгоритм был улучшен Генри Коэном[en] и Хендриком Ленстрой до APR-CL, время работы которого для любого числа можно вычислить как , где  — некоторая вычисляемая константа.

История

До 1980 года у всех известных алгоритмов проверки на простоту, за исключением вероятностных и недоказанных, временная сложность алгоритма была экспоненциальной. Однако в 1983 г. был разработан алгоритм, лежащий вблизи P-класса. Строго говоря, алгоритм не относится к этому классу, однако медленно растущая сложность позволяет практическое использование алгоритма.

К примеру, для числа  — гуголплекс,

Старая шутка гласит:
"Доказано, что стремится к бесконечности, но никто никогда не видел, как он это делает."Иэн Стюарт

Ключевые понятия

Евклидово простое число

Пусть имеется некоторое конечное множество простых чисел. Если для некоторого простого числа выполнены следующие условия:

  1.  — свободное от квадратов число
  2. все простые делители принадлежат множеству

тогда называется евклидовым простым числом относительно множества .

Набор «начальных» простых чисел

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

Элементы из этого множества назовем набором «начальных» простых чисел.

Indq(x)

Введем некоторое число . Пусть  — его первообразный корень. Тогда должно выполняться следующее условие:

,

где .

Замечание: В качестве выбираем наименьшее неотрицательное число.

Сумма Якоби

Суммой Якоби называют сумму следующего вида:

,

где суммирование идет по всем наборам классов смежности для в , кроме тех, что равны .

Ключевые леммы

Основные леммы[2], используемые при доказательстве корректности алгоритма:


Лемма 1.

Простые идеалы из , лежащие над главным идеалом это:

для всех


Лемма 2.

Пусть и имеет порядок в группе . Возьмем . Так же где  — многочлен в для каждого . Будем считать, что идеалы Если является простым делителем , тогда в :

и каждое , делимое на некоторый простой идеал из , лежит над


Лемма 3.

Возьмем и элементы взаимно простые с и относительно друг друга.

 — символ Гильберта.


Лемма 4. Если , тогда


Лемма 5.

Выберем такие, что . Для положим: то есть или .

Тогда


Лемма 6.[3].

Для всех


Лемма 7.

Если , то существуют такие что и

где  — обратный элемент к


Лемма (Извлечения).

Пусть  — идеалы в такие, что и пусть сопряженные простые идеалы, делящие соответственно. Пускай существует такое что . Тогда для любого выполняется:

и следовательно

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

Если является составным числом, то оно имеет некий делитель . Для проверки на простоту ищем это .

Если нам известны значения для каждой пары , то по китайской теореме об остатках мы можем найти . Каждая пара выбирается следующим образом: , а  — простое евклидово число относительно такое, что

В алгоритме перебираются все возможные значения для всех , исходя из того, что известно только одно

Алгоритм

Ввод: целое число n > 1.

A. Шаг подготовки

1. Вычисляем наименьшее положительное число свободное от квадратов, такое что: .

Определим множество «начальных» простых чисел, являющиеся делителями . Назовем евклидовым простым числом, если простое и

2. Проверим — делится ли на любое «начальное» или евклидово простое число. Если делитель найдется, причем не равный , то объявляем составным и прерываем алгоритм. Иначе вычислим наименьший положительный первообразный корень для каждого евклидового простого числа .

3. Для каждого «начального» простого числа найдем числа такие, что:

,

,

Для примем .

4. Для каждого «начального» и евклидового простых чисел, таких что зафиксируем простой идеал:

,

где принадлежит  — корень из единицы.

Вычислим сумму Якоби

если ,

если

B. Шаг вычислений

1. Для каждого «начального» простого числа найдем НОД в для и набора , где пробегает все значения евклидовых простых чисел, причем , а пробегает по всем значениям из Gal. Тогда либо выносим решение о том, что составное, либо строим надлежащий идеал в кольце , а также находим числа и , такие, что:

,

или некоторое из , где

2. Для каждого «начального» простого числа сделаем следующее: если для некоторого , тогда возьмем . В этом ключе построим числа для всех , и такие, что:

Если же для всех , примем .

C. Шаг объединения результатов

Проделаем шаги 1-4 для всех натуральных

1. Для каждого вычислим по китайской теореме об остатках вычислим числа :

при всевозможных , что . Так же положим, что

2. Для каждого посчитаем наименьшее целое, положительное число

3. Используя Китайскую теорему об остатках, вычислим наименьшее положительное число такое, что для каждого

4. Если , тогда объявляем составным. Иначе переходим к следующему

5. Объявляем простым.

Оценка сложности

Оценка времени выполнения алгоритма вытекает из следующих теорем[2]:

Теорема 1.

Для значений вышеупомянутый алгоритм правильно определяет будет ли простым или составным за время . И справедливы следующие оценки: для простых

для всех значения Где  — положительная, вычисляемая константа.
Теорема 2.

Существуют такие положительные, вычисляемые константы , что для всех

Программная реализация

  • В UBASIC[en] приведена реализация алгоритма под именем APRT-CLE (APR Test CL extended)
  • factoring applet использует алгоритм APR-CL с определёнными условиями
  • Pari/GP условное использование APR-CL в реализации isprime().
  • mpz_aprcl реализация с открытым исходным кодом. Использует C + GMP.

Примечания

  1. Стюарт, 2015.
  2. 1 2 Adleman, Pomerance, Rumely, 1983.
  3. K. Iwasawa. A note on jacobi sum (англ.) // Symposia Math. — 1975. — С. 447—459.

Список литературы

  • Иэн Стюарт. Величайшие математические задачи. — М.: Альпина нон-фикшн, 2015. — 460 с. — ISBN 978-5-91671-318-3.
  • Leonard M. Adleman, Carl Pomerance and Robert S. Rumely. [1] (англ.) = On distinguishing prime numbers from composite numbers. — 1983. — P. 7—25.
Эта страница в последний раз была отредактирована 16 мая 2023 в 16:58.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).