Тест на простоту Лукаса-Лемера - Lucas–Lehmer primality test

В математика, то Тест Лукаса-Лемера (LLT) это тест на простоту за Числа Мерсенна. Первоначально тест был разработан Эдуард Лукас в 1856 г.[нужна цитата ] и впоследствии улучшенный Лукасом в 1878 году и Деррик Генри Лемер в 1930-е гг.

Тест

Тест Лукаса – Лемера работает следующим образом. Позволять Mп = 2п - 1 будет числом Мерсенна для тестирования п ан нечетное простое число. Первобытность п можно эффективно проверить с помощью простого алгоритма, например судебное отделение поскольку п экспоненциально меньше, чем Mп. Определите последовательность для всех я ≥ 0 по

Первые несколько членов этой последовательности: 4, 14, 194, 37634, ... (последовательность A003010 в OEIS ).Потом Mп прост тогда и только тогда, когда

Номер sп − 2 модMп называется Остаток Лукаса-Лемера из п. (Некоторые авторы эквивалентно устанавливают s1 = 4 и test sп−1 мод Mп). В псевдокод, тест можно записать как

// Определяем, если Mп = 2п - 1 является простым для п > 2Лукас – Лемер(п) вар s = 4 вар M = 2п − 1    повторение p - 2 раза: s = ((s × s) - 2) mod M если s == 0 возвращаться ОСНОВНОЙ еще возвращаться КОМПОЗИТНЫЙ

Выполнение мод M на каждой итерации гарантирует, что все промежуточные результаты будут не более п бит (в противном случае количество бит удваивается на каждой итерации). Та же стратегия используется в модульное возведение в степень.

Альтернативные начальные значения

Начальные значения s0 кроме 4 возможны, например 10, 52 и другие (последовательность A018844 в OEIS ). Остаток Лукаса-Лемера, рассчитанный с этими альтернативными начальными значениями, все равно будет равен нулю, если Mп простое число Мерсенна. Однако члены последовательности будут другими, и ненулевой вычет Люка-Лемера для непростых Mп будет иметь числовое значение, отличное от ненулевого значения, рассчитанного при s0 = 4.

Также можно использовать начальное значение (2 мод.Mп) (3 модMп)−1, обычно обозначается для краткости 2/3.[1] Это начальное значение равно (2п + 1) / 3, то Номер вагстаффа с показателем п.

Начальные значения, такие как 4, 10 и 2/3, универсальны, то есть они действительны для всех (или почти для всех) п. Есть бесконечно много дополнительных универсальных стартовых значений.[1] Однако некоторые другие начальные значения действительны только для подмножества всех возможных п, Например s0 = 3 можно использовать, если п = 3 (мод.4).[2] Это начальное значение часто использовалось там, где это было удобно в эпоху ручных вычислений, в том числе Лукасом при доказательстве M127 основной.[3]Первые несколько членов последовательности: 3, 7, 47, ... (последовательность A001566 в OEIS ).

Знак предпоследнего семестра

Если sп−2 = 0 модMп тогда предпоследний член sп−3 = ± 2(п+1)/2 модMп. Знак этого предпоследнего члена называется символом Лемера ϵ (s0п).

В 2000 году С.Ю. Гебре-Эгзиабер доказал, что для начального значения 2/3 и для п ≠ 5 знак:

То есть ϵ (2/3,п) = +1 тогда и только тогда п = 1 (mod 4) и p 5.[1]

Тот же автор также доказал, что символы Лемера для начальных значений 4 и 10, когда п не 2 или 5 связаны между собой:

То есть ϵ (4,п) × ϵ (10,п) = 1 тогда и только тогда. п = 5 или 7 (mod 8) и p ≠ 2, 5.[1]

Последовательность OEIS A123271 показывает ϵ (4,п) для каждого простого числа Мерсенна Mп.

Сложность времени

В описанном выше алгоритме на каждой итерации выполняются две дорогостоящие операции: умножение с × с, а мод M операция. В мод M работа может быть особенно эффективной на стандартных двоичных компьютерах, если учесть, что

Это говорит о том, что наименее значимые п кусочки k плюс оставшиеся части k эквивалентны k по модулю 2п−1. Эту эквивалентность можно использовать неоднократно, пока не более п биты остаются. Таким образом, остаток после деления k у Мерсенна номер 2п−1 вычисляется без использования деления. Например,

916 мод 25−1=11100101002 мод 25−1
=((916 мод 25) + int (916 ÷ 25)) мод 25−1
=(101002 + 111002) мод 25−1
=1100002 мод 25−1
=(100002 + 12) мод 25−1
=100012 мод 25−1
=100012
=17.

Более того, поскольку с × с никогда не превысит M2 < 22p, этот простой прием сходится не более чем за 1 п-битовое сложение (и, возможно, перенос из пth к 1-му биту), что может быть выполнено за линейное время. Этот алгоритм имеет небольшой исключительный случай. Будет произведено 2п−1 для кратного модуля, а не для правильного значения 0. Однако этот случай легко обнаружить и исправить.

Если модуль не задан, асимптотическая сложность алгоритма зависит только от алгоритм умножения привык к квадрату s на каждом шагу. Простой "школьный" алгоритм умножения требует О (п2) операций на уровне битов или слов для возведения в квадрат п-битовое число. Поскольку это происходит O (п) раз, общая временная сложность O (п3). Более эффективный алгоритм умножения - это Алгоритм Шёнхаге – Штрассена, который основан на Быстрое преобразование Фурье. Это требует только O (п бревно п журнал журнал п) время возвести в квадрат п-битовое число. Это снижает сложность до O (п2 бревно п журнал журнал п) или Õ (п2).[4] Еще более эффективный алгоритм умножения, Алгоритм Фюрера, только нужно время умножать два п-битовые числа.

Для сравнения, наиболее эффективный рандомизированный тест на простоту для общих целых чисел, Тест на простоту Миллера – Рабина, требует O (k п2 бревно п журнал журнал п) битовые операции с использованием умножения БПФ для п-цифровой номер, где k - количество итераций, связанное с частотой ошибок. Для постоянного k, это тот же класс сложности, что и тест Лукаса-Лемера. Однако на практике стоимость выполнения множества итераций и других различий приводит к снижению производительности Миллера – Рабина. Самый эффективный детерминированный тест на простоту п-цифровой номер, Тест на простоту AKS, требует Õ (n6) битовые операции в своем наиболее известном варианте и очень медленные даже для относительно небольших значений.

Примеры

Число Мерсенна M3 = 23−1 = 7 простое число. Тест Лукаса – Лемера подтверждает это следующим образом. Первоначально s устанавливается на 4, а затем обновляется 3−2 = 1 раз:

  • s ← ((4 × 4) - 2) mod 7 = 0.

Поскольку окончательное значение s равно 0, напрашивается вывод, что M3 простое.

С другой стороны, M11 = 2047 = 23 × 89 не является простым. Опять таки, s установлен на 4, но теперь обновляется 11−2 = 9 раз:

  • s ← ((4 × 4) - 2) mod 2047 = 14
  • s ← ((14 × 14) - 2) mod 2047 = 194
  • s ← ((194 × 194) - 2) mod 2047 = 788
  • s ← ((788 × 788) - 2) mod 2047 = 701
  • s ← ((701 × 701) - 2) mod 2047 = 119
  • s ← ((119 × 119) - 2) мод 2047 = 1877
  • s ← ((1877 × 1877) - 2) мод 2047 = 240
  • s ← ((240 × 240) - 2) мод 2047 = 282
  • s ← ((282 × 282) - 2) mod 2047 = 1736

Поскольку окончательное значение s не 0, вывод состоит в том, что M11 = 2047 не является простым. Хотя M11 = 2047 имеет нетривиальные факторы, тест Лукаса – Лемера не дает никаких указаний на то, какими они могут быть.

Доказательство правильности

Доказательство правильности этого теста, представленное здесь, проще, чем исходное доказательство, данное Лемером. Напомним определение

Цель - показать, что Mп премьер если только

Последовательность это отношение повторения с закрытое решение. Позволять и . Затем следует индукция который для всех я:

и

Последний шаг использует Эта закрытая форма используется как при доказательстве достаточности, так и при доказательстве необходимости.

Достаточность

Цель - показать, что подразумевает, что простое. Далее следует прямое доказательство, использующее элементарные теория групп предоставлено Дж. У. Брюсом[5] как сообщает Джейсон Войцеховски.[6]

Предполагать потом

для некоторого целого числа k, так

Умножение на дает

Таким образом,

От противоречия предположим, что Mп составно, и пусть q быть наименьшим простым делителем Mп. Числа Мерсенна нечетные, поэтому q > 2. Неофициально,[примечание 1] позволять быть целыми числами по модулю q, и разреши Умножение в определяется как

Ясно, что это умножение замкнутое, т.е. произведение чисел из Икс сам находится в Икс. Размер Икс обозначается

С q > 2, следует, что и находятся в Икс.[заметка 2] Подмножество элементов в Икс с обратными образует группу, которая обозначается Икс* и имеет размер Один элемент в Икс не имеет обратного равно 0, поэтому

Сейчас же и , так

в Икс.Тогда по уравнению (1)

в Икс, и возведение обеих сторон в квадрат дает

Таким образом лежит в Икс* и имеет обратный Кроме того, порядок из разделяет тем не мение , поэтому порядок не разделяется Таким образом, заказ ровно

Порядок элемента равен порядку (размеру) группы, поэтому

Но q - наименьший простой фактор композиции , так

Отсюда получаем противоречие . Следовательно, простое.

Необходимость

В другом направлении цель состоит в том, чтобы показать, что первичность подразумевает . Следующее упрощенное доказательство принадлежит Öystein J. Rödseth.[7]

С для нечетных , следует из свойства символа Лежандра который Это означает, что 3 - это квадратичный невычет по модулю К Критерий Эйлера, это эквивалентно

Напротив, 2 - это квадратичный вычет по модулю поскольку и так На этот раз критерий Эйлера дает

Объединение этих двух отношений эквивалентности дает

Позволять , и определим Икс как прежде, как кольцо Тогда на ринге Икс, следует, что

где первое равенство использует Биномиальная теорема в конечном поле, который

,

а второе равенство использует Маленькая теорема Ферма, который

для любого целого а. Значение было выбрано так, что Следовательно, это можно использовать для вычисления в ринге Икс в качестве

Остается только умножить обе части этого уравнения на и использовать , который дает

С 0 в Икс, это также 0 по модулю

Приложения

Тест Лукаса – Лемера - это критерий простоты, используемый Отличный Интернет-поиск Mersenne Prime (GIMPS), чтобы найти большие простые числа. Этот поиск оказался успешным в обнаружении многих из известных на сегодняшний день самых больших простых чисел.[8] Тест считается ценным, потому что он, вероятно, может проверить простоту большого набора очень больших чисел за доступное время. Напротив, столь же быстрый Тест Пепина для любого Число Ферма может использоваться только для гораздо меньшего набора очень больших чисел до достижения вычислительных ограничений.

Смотрите также

Примечания

  1. ^ Формально пусть и .
  2. ^ Формально, и находятся в Икс. Злоупотреблением языком и идентифицируются с их изображениями в Икс при естественном гомоморфизме колец из к Икс который отправляет к Т.

Рекомендации

  1. ^ а б c d Янсен, Б.Дж.Х. (2012). Простые числа Мерсенна и теория полей классов (Докторская диссертация). Лейденский университет. п. iii. Получено 2018-12-17.
  2. ^ Робинсон, Рафаэль М. (1954). «Числа Мерсенна и Ферма». Proc. Амер. Математика. Soc. 5: 842–846. Дои:10.1090 / S0002-9939-1954-0064787-4.
  3. ^ Хаворт, Гай (1990). Числа Мерсенна (PDF) (Технический отчет). п. 20. Получено 2018-12-17.
  4. ^ Colquitt, W. N .; Уэлш, Л., младший (1991), «Новый Мерсенн Прайм», Математика вычислений, 56 (194): 867–870, Дои:10.2307/2008415, Использование БПФ ускоряет асимптотическое время теста Лукаса – Лемера для Mп из O (п3) тоже(п2 бревно п журнал журнал п) битовые операции.
  5. ^ Брюс, Дж. У. (1993). «Действительно тривиальное доказательство теста Лукаса – Лемера». Американский математический ежемесячник. 100 (4): 370–371. Дои:10.2307/2324959.
  6. ^ Джейсон Войцеховски. Простые числа Мерсенна, введение и обзор. 2003.
  7. ^ Рёдсет, Ойстейн Дж. (1994). «Замечание о проверках простоты для N = h · 2 ^ n − 1» (PDF). BIT вычислительная математика. 34 (3): 451–454. Дои:10.1007 / BF01935653. Архивировано из оригинал (PDF) 6 марта 2016 г.
  8. ^ Рекордная десятка лучших, Прайм Страницы

внешняя ссылка