stringtranslate.com

Тест Лукаса-Лемера на простоту

В математике тест Люка -Лемера ( LLT ) представляет собой тест на простоту чисел Мерсенна . Первоначально тест был разработан Эдуардом Лукасом в 1878 году [1] и впоследствии доказан Дерриком Генри Лемером в 1930 году.

Тест

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

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

Число s p  − 2  mod  M p называется остатком Люка–Лемера числа p . (Некоторые авторы аналогичным образом устанавливают s 1  = 4 и проверяют s p −1 mod M p ). В псевдокоде тест может быть записан как

// Определить, является ли M p = 2 p − 1 простым для p > 2 Лукас–Лемер (p) var s = 4 var M = 2 p − 1 повторяем p − 2 раза: s = ((s × s) − 2) mod M если s == 0, возвращаем PRIME , иначе  возвращаем COMPOSITE.

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

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

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

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

Начальные значения, такие как 4, 10 и 2/3, являются универсальными, то есть они действительны для всех (или почти всех) p . Существует бесконечно много дополнительных универсальных стартовых значений. [2] Однако некоторые другие начальные значения действительны только для подмножества всех возможных p , например, s 0  = 3 можно использовать, если p  = 3 (mod 4). [3] Это начальное значение часто использовалось там, где это было возможно, в эпоху ручных вычислений, в том числе Лукасом при доказательстве простого числа M 127 . [4] Первые несколько членов последовательности — 3, 7, 47, ... (последовательность A001566 в OEIS ).

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

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

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

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

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

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

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

Временная сложность

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

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

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

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

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

Примеры

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

Поскольку окончательное значение s равно 0, можно сделать вывод, что M 3 простое число.

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

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

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

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

Цель состоит в том, чтобы показать, что M p является простым тогда и только тогда, когда

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

и

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

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

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

Предположим, тогда

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

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

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

В качестве противоречия предположим, что M p является составным, и пусть q — наименьший простой делитель M p . Числа Мерсенна нечетны, поэтому q  > 2. Пусть – целые числа по модулю q , и пусть умножение в определяется как

[примечание 1]

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

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

Сейчас и так

в Х. ​Тогда по уравнению (1)

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

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

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

Но q — наименьший простой делитель композиции , поэтому

Это приводит к противоречию . Следовательно, является простым.

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

В другом направлении цель состоит в том, чтобы показать, что простота подразумевает . Следующее упрощенное доказательство принадлежит Ойстейну Дж. Рёдсету. [8]

Поскольку для нечетного из свойств символа Лежандра следует, что это означает, что 3 является квадратичным невычетом по модулю. По критерию Эйлера это эквивалентно

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

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

Пусть , и определим X , как и ранее, как кольцо. Тогда в кольце X следует, что

где первое равенство использует биномиальную теорему в конечном поле , которое

,

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

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

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

Поскольку в X это 0 , оно также равно 0 по модулю.

Приложения

Тест Лукаса-Лемера — один из основных тестов на простоту, используемый Великой Интернет-поиском простых чисел Мерсенна (GIMPS) для поиска больших простых чисел. Этот поиск увенчался успехом и позволил обнаружить многие из самых больших простых чисел, известных на сегодняшний день. [9] Этот тест считается ценным, поскольку с его помощью можно доказуемо проверить на простоту большой набор очень больших чисел за доступный промежуток времени. Напротив, столь же быстрый тест Пепена для любого числа Ферма можно использовать только для гораздо меньшего набора очень больших чисел, прежде чем он достигнет вычислительных пределов.

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

Примечания

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

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

  1. ^ Джарома, Джон Х. (2004). «Примечание к тесту Лукаса-Лемера» (PDF) . Бюллетень Ирландского математического общества . 54 (2). Ирландское математическое общество: 63. doi : 10.33232/BIMS.0054.63.72. S2CID  16831811.
  2. ^ abcde Янсен, BJH (2012). Простые числа Мерсенна и теория полей классов (Докторская диссертация). Лейденский университет. п. iii . Проверено 17 декабря 2018 г.
  3. ^ Робинсон, Рафаэль М. (1954). «Числа Мерсенна и Ферма». Учеб. амер. Математика. Соц . 5 (5): 842–846. дои : 10.1090/S0002-9939-1954-0064787-4 .
  4. ^ Хаворт, Гай (1990). Числа Мерсенна (PDF) (Технический отчет). п. 20 . Проверено 17 декабря 2018 г.
  5. ^ Колкитт, Западная Нью-Йорк; Уэлш, Л. младший (1991), «Новое простое число Мерсенна», Mathematics of Computation , 56 (194): 867–870, doi : 10.2307/2008415 , JSTOR  2008415, Использование БПФ ускоряет асимптотическое время для тест Люка-Лемера для M p от O( p 3 ) до O( p 2 log p log log p ) битовых операций.
  6. ^ Брюс, JW (1993). «Действительно тривиальное доказательство теста Лукаса-Лемера». Американский математический ежемесячник . 100 (4): 370–371. дои : 10.2307/2324959. JSTOR  2324959.
  7. ^ Джейсон Войцеховски. Простые числа Мерсенна, введение и обзор. 2003.
  8. ^ Рёдсет, Эйстейн Дж. (1994). «Заметка о тестах на простоту для N=h·2^n−1» (PDF) . БИТ Численная математика . 34 (3): 451–454. дои : 10.1007/BF01935653. S2CID  120438959. Архивировано из оригинала (PDF) 6 марта 2016 г.
  9. ^ "Десять лучших" рекордных праймов, The Prime Pages

Внешние ссылки