Тест Лукаса-Лемера на простоту
В математике тест Люка-Лемера ( LLT ) представляет собой тест на простоту чисел Мерсенна . Первоначально тест был разработан Эдуардом Лукасом в 1878 году. [ 1 ] и впоследствии было доказано Дерриком Генри Лемером в 1930 году.
Тест
[ редактировать ]Тест Лукаса-Лемера работает следующим образом. Пусть M p = 2 п − 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 ). В псевдокоде тест может быть записан как
// Determine if Mp = 2p − 1 is prime for p > 2 Lucas–Lehmer(p) var s = 4 var M = 2p − 1 repeat p − 2 times: s = ((s × s) − 2) mod M if s == 0 return PRIME else return 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 п + 1) /3 — число Вагстафа с показателем p .
Начальные значения, такие как 4, 10 и 2/3, являются универсальными, то есть они действительны для всех (или почти всех) p . Существует бесконечно много дополнительных универсальных стартовых значений. [ 2 ] Однако некоторые другие начальные значения действительны только для подмножества всех возможных p , например, s 0 = 3 можно использовать, если p = 3 (mod 4). [ 3 ] Это начальное значение часто использовалось там, где это было возможно, в эпоху ручных вычислений, в том числе Лукасом при доказательстве простого числа М 127 . [ 4 ] Первые несколько членов последовательности — 3, 7, 47,... (последовательность A001566 в OEIS ).
Знак предпоследнего срока
[ редактировать ]Если s p −2 = 0 mod M p , то предпоследний член равен s p −3 = ± 2. ( р +1)/2 мод М п . Знак этого предпоследнего слагаемого называется символом Лемера ϵ( , 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 (mod 8) и p ≠ 2, 5. [ 2 ]
Последовательность OEIS A123271 показывает ϵ(4, p ) для каждого простого числа Мерсенна M p .
Временная сложность
[ редактировать ]В алгоритме, написанном выше, на каждой итерации выполняются две дорогостоящие операции: умножение s × s
и mod M
операция. mod M
операцию можно сделать особенно эффективной на стандартных двоичных компьютерах, заметив, что
Это говорит о том, что младшие n бит числа k плюс оставшиеся биты k эквивалентны k по модулю 2. н −1. Эту эквивалентность можно использовать неоднократно, пока не останется не более n бит. Таким образом, остаток от деления k на число Мерсенна 2 н −1 вычисляется без использования деления. Например,
916 против 2 5 −1 | = | 1110010100 2 против 2 5 −1 |
= | ((916 против 2 5 ) + int(916 ÷ 2 5 )) против 2 5 −1 | |
= | (10100 2 + 11100 2 ) против 2 5 −1 | |
= | 110000 2 на 2 5 −1 | |
= | (10000 2 + 1 2 ) против 2 5 −1 | |
= | 10001 2 против 2 5 −1 | |
= | 10001 2 | |
= | 17. |
Более того, поскольку s × s
никогда не превысит М 2 < 2 2р Этот простой метод сходится не более чем за 1 p -битное сложение (и, возможно, перенос от p -го бита к 1-му биту), что можно выполнить за линейное время. Этот алгоритм имеет небольшой исключительный случай. Он произведет 2 н −1 для кратного модуля, а не правильного значения 0. Однако этот случай легко обнаружить и исправить.
Если не учитывать модуль, асимптотическая сложность алгоритма зависит только от алгоритма умножения, используемого для возведения в квадрат s на каждом шаге. Простой школьный алгоритм умножения требует O ( p 2 ) операции на уровне битов или слов для возведения в квадрат p -битного числа. Поскольку это происходит O( p ) раз, общая временная сложность равна O( p 3 ). Более эффективным алгоритмом умножения является алгоритм Шенхаге–Штрассена , основанный на быстром преобразовании Фурье . -битного числа требуется всего O( p log p log log p Для возведения в квадрат p ) . Это снижает сложность до O( p 2 log p log log p ) или Õ( p 2 ). [ 5 ] Еще более эффективный алгоритм умножения, алгоритм Фюрера , требует всего лишь время перемножить два p -битных числа.
Для сравнения, наиболее эффективный рандомизированный тест на простоту для общих целых чисел, тест на простоту Миллера-Рабина , требует O( k n 2 журнал н журнал журнал н ) [ противоречивый ] битовые операции с использованием умножения БПФ для n -значного числа, где k — количество итераций, связанное с частотой ошибок. Для константы k это тот же класс сложности, что и тест Люка-Лемера. Однако на практике стоимость выполнения множества итераций и другие различия приводят к ухудшению производительности Миллера-Рабина. [ нужны разъяснения ] Самый эффективный детерминированный тест на простоту для любого n -значного числа, тест на простоту AKS , требует Õ(n 6 ) битовые операции в своем наиболее известном варианте и чрезвычайно медленны даже для относительно небольших значений.
Примеры
[ редактировать ]Число Мерсенна M 3 = 2 3 −1 = 7 — простое число. Тест Лукаса-Лемера подтверждает это следующим образом. Первоначально s имеет значение 4, а затем обновляется 3−2 = 1 раз:
- s ← ((4 × 4) − 2) по модулю 7 = 0.
Поскольку окончательное значение s равно 0, можно сделать вывод, что M 3 простое число.
С другой стороны, M 11 = 2047 = 23 × 89 не является простым. Опять же, для s установлено значение 4, но теперь оно обновляется 11−2 = 9 раз:
- s ← ((4 × 4) − 2) по модулю 2047 = 14
- s ← ((14 × 14) − 2) по модулю 2047 = 194
- s ← ((194 × 194) − 2) по модулю 2047 = 788
- s ← ((788 × 788) − 2) по модулю 2047 = 701
- s ← ((701 × 701) − 2) по модулю 2047 = 119
- s ← ((119 × 119) − 2) по модулю 2047 = 1877
- с ← ((1877 × 1877) − 2) по модулю 2047 = 240
- s ← ((240 × 240) − 2) по модулю 2047 = 282
- s ← ((282 × 282) − 2) по модулю 2047 = 1736
Поскольку окончательное значение s не равно 0, можно сделать вывод, что M 11 = 2047 не является простым числом. Хотя M 11 = 2047 имеет нетривиальные факторы, тест Лукаса-Лемера не дает никаких указаний на то, какими они могут быть.
Доказательство правильности
[ редактировать ]Представленное здесь доказательство корректности этого теста проще, чем оригинальное доказательство, данное Лемером. Напомним определение
Цель состоит в том, чтобы показать, что M p является простым тогда и только тогда, когда
Последовательность представляет собой рекуррентное отношение с решением в замкнутой форме . Позволять и . Тогда по индукции следует, что для всех я :
и
На последнем шаге используется Эта закрытая форма используется как при доказательстве достаточности, так и при доказательстве необходимости.
Достаточность
[ редактировать ]Цель – показать, что подразумевает, что является простым. Далее следует простое доказательство, использующее элементарную теорию групп , данное Дж. У. Брюсом. [ 6 ] как рассказал Джейсон Войцеховски. [ 7 ]
Предполагать Затем
для некоторого целого числа k , поэтому
Умножение на дает
Таким образом,
В качестве противоречия предположим, что M p является составным, и пусть q — наименьший простой делитель M p . Числа Мерсенна нечетны, поэтому q > 2. Пусть — целые числа по модулю q , и пусть Умножение в определяется как
Ясно, что это умножение замкнуто, т. е. произведение чисел из X само находится в X . Размер X обозначается
Поскольку q > 2, отсюда следует, что и находятся Х. в [ примечание 2 ] Подмножество элементов в X с обратными образует группу, которая обозначается X * и имеет размер Один элемент в X , который не имеет обратного, равен 0, поэтому
Сейчас и , так
в Х. Тогда по уравнению (1)
в X , и возведение в квадрат обеих сторон дает
Таким образом лежит в X * и имеет обратную того, порядок Кроме делит Однако , поэтому порядок не делится Таким образом, порядок именно
Порядок элемента не превышает порядка (размера) группы, поэтому
Но q - наименьший простой делитель составного числа. , так
Это приводит к противоречию . Поэтому, является простым.
Необходимость
[ редактировать ]В другом направлении цель состоит в том, чтобы показать, что простота подразумевает . Следующее упрощенное доказательство принадлежит Ойстейну Дж. Рёдсету. [ 8 ]
С для странных следует, , из свойств символа Лежандра что Это означает, что 3 — квадратичный невычет по модулю По критерию Эйлера это эквивалентно
Напротив, 2 представляет собой квадратичный вычет по модулю с и так На этот раз критерий Эйлера дает
Объединение этих двух отношений эквивалентности дает
Позволять и определим X, как и прежде, как кольцо Тогда в кольце X следует, что
где первое равенство использует биномиальную теорему в конечном поле , которое
- ,
а второе равенство использует малую теорему Ферма , которая
для любого целого числа a . Стоимость был выбран так, что Следовательно, это можно использовать для вычисления в кольце X как
Остается только умножить обе части этого уравнения на и использовать , что дает
С равно 0 в X , оно также равно 0 по модулю
Приложения
[ редактировать ]Тест Лукаса-Лемера — один из основных тестов на простоту, используемый Великим интернет-поиском простых чисел Мерсенна (GIMPS) для поиска больших простых чисел. Этот поиск увенчался успехом и позволил обнаружить многие из самых больших простых чисел, известных на сегодняшний день. [ 9 ] Этот тест считается ценным, поскольку с его помощью можно доказуемо проверить на простоту большой набор очень больших чисел за доступный промежуток времени. Напротив, столь же быстрый тест Пепена для любого числа Ферма можно использовать только для гораздо меньшего набора очень больших чисел, прежде чем он достигнет вычислительных пределов.
См. также
[ редактировать ]Примечания
[ редактировать ]Ссылки
[ редактировать ]- ^ Джарома, Джон Х. (2004). «Примечание к тесту Лукаса-Лемера» (PDF) . Бюллетень Ирландского математического общества . 54 (2). Ирландское математическое общество: 63. doi : 10.33232/BIMS.0054.63.72 . S2CID 16831811 .
- ^ Jump up to: а б с д и Янсен, BJH (2012). Простые числа Мерсенна и теория полей классов (Докторская диссертация). Лейденский университет. п. iii . Проверено 17 декабря 2018 г.
- ^ Робинсон, Рафаэль М. (1954). «Числа Мерсенна и Ферма» . Учеб. амер. Математика. Соц . 5 (5): 842–846. дои : 10.1090/S0002-9939-1954-0064787-4 .
- ^ Хаворт, Гай (1990). Числа Мерсенна (PDF) (Технический отчет). п. 20 . Проверено 17 декабря 2018 г.
- ^ Колкитт, Западная Нью-Йорк; Уэлш, Л. младший (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 ) битовые операции.
- ^ Брюс, JW (1993). «Действительно тривиальное доказательство теста Лукаса-Лемера». Американский математический ежемесячник . 100 (4): 370–371. дои : 10.2307/2324959 . JSTOR 2324959 .
- ^ Джейсон Войцеховски. Простые числа Мерсенна, введение и обзор . 2003.
- ^ Рёдсет, Эйстейн Дж. (1994). «Заметка о тестах на простоту для N=h·2^n−1» (PDF) . БИТ Численная математика . 34 (3): 451–454. дои : 10.1007/BF01935653 . S2CID 120438959 . Архивировано из оригинала (PDF) 6 марта 2016 г.
- ^ "Десять лучших" рекордных праймов , The Prime Pages
- Крэндалл, Ричард ; Померанс, Карл (2001), «Раздел 4.2.1: Тест Лукаса-Лемера», Простые числа: вычислительная перспектива (1-е изд.), Берлин: Springer, стр. 167–170, ISBN 0-387-94777-9