При заданном
простом числе
тест позволяет за полиномиальное время
от битовой длины
числа Мерсенна
определить, является
простым или
составным
.
Доказательство
справедливости теста существенно опирается на
функции Люка
, что позволило обобщить тест Люка — Лемера на некоторые числа, вид которых отличен от чисел Мерсенна
.
Для проверки простоты
последовательность чисел
вычисляется по модулю
числа
(то есть вычисляются не сами числа
, длина которых растёт
экспоненциально
, а
остатки от деления
на
, длина которых ограничена
битами
). Последнее число в этой последовательности
называется
вычетом Люка — Лемера
. Таким образом, число Мерсенна
является простым тогда и только тогда, когда число
— нечётное простое и вычет Люка — Лемера равен нулю. Сам алгоритм можно записать в виде псевдокода
:
LLT(p)
►Вход: простое нечётное число p
S = 4
k = 1
M = 2p − 1
До тех пока k != p - 1 выполнять
S = ((S × S) − 2) mod M
k += 1
Конец циклаЕсли S = 0 выполнятьВозвратить ПРОСТОЕ
иначеВозвратить СОСТАВНОЕ
Конец условия
Значения
, для которых справедлив критерий простоты, образуют последовательность:
.
Не обязательно проверять все простые нечётные
при непосредственном переборе, поскольку некоторые числа Мерсенна специального вида всегда являются составными, что следует, например, из следующей доказанной
Эйлером
теоремы
:
Если числа
и
— простые, то
.
Доказательство
Один из подходов к доказательству основан на использовании
функций Люка
:
, поэтому если
— простое, то
и из последних двух свойств
делит
Далее, из свойств 1. и 2.
,
но по свойству 3.
,
то есть
делит
, а значит и
.
Достаточность
Если
делит
, то из доказательства необходимости следует, что оно делит и
.
взаимно просто с
по свойству 1., а по свойству 2. — делит
. Но тогда каждый простой делитель числа
представим в виде
, то есть
— простое.
История
Критерий простоты был предложен французским математиком
Люка
в
1878 году
. В частности, Люка показал, что алгоритм позволяет проверять простоту
для простых
. В
1930 году
американский математик
Лемер
полностью доказал справедливость критерия для всех простых нечётных
в своей
диссертации
на соискание
учёной степени
доктора философии
.
В 1952 году
Робинсон
при поддержке Лемера провел вычисления на компьютере
SWAC
с использованием теста Люка — Лемера, результатом которого стало открытие простых чисел
и
. Позднее в этом же году были открыты
,
и
.
Лёгкость реализации теста и рост вычислительных мощностей компьютеров позволили фактически любому человеку заниматься поиском простых чисел Мерсенна. Так, в 1978 году два американских старшеклассника Лора Никель и Курт Нолл (Лемер преподавал им теорию чисел) за 3 года работы доказали простоту числа
, используя
суперкомпьютер
CDC
в
Калифорнийском университете
.
Наибольшее из известных простых чисел Мерсенна на 2018 год, полученное с помощью теста Люка — Лемера, это
.
Например, чтобы вычислить остаток от деления числа
на
, нужно исходное число преобразовать в двоичный вид:
, и, согласно теореме, разбивать
на две части каждый раз, когда оно превосходит
:
При использовании этого способа деления по модулю
вычислительная сложность
теста будет определяться сложностью алгоритма возведения в квадрат. Длина
составляет
бит, а алгоритм умножения двух чисел, например, «в столбик», имеет сложность
. Так как возведение в квадрат в тесте происходит
раз, то вычислительная сложность алгоритма равна
. Тест можно ускорить, если использовать алгоритмы быстрого умножения больших целых чисел, например,
метод умножения Шёнхаге — Штрассена
. Сложность теста в таком случае составит
.
Вариации и обобщения
Условие в тесте можно ослабить
и потребовать лишь, чтобы
, откуда немедленно следует:
.
В 1930 году Лемер вывел критерий простоты для чисел вида
, где
, а в 1969 году
модифицировал
тест Люка — Лемера для чисел такого вида, который впоследствии был дополнен
Стечкиным
. Возможно обобщение теста и на числа вида
.
были доказаны критерии простоты, аналогичные тесту Люка — Лемера, для чисел вида
и
, а также для некоторых чисел вида
, где
— простое
.
Благодаря тесту Люка — Лемера,
простые числа Мерсенна
удерживают лидерство как
самые большие известные простые числа
, хотя и до существования теста числа Мерсенна почти всегда были наибольшими простыми. Так, в 1588 году была доказана простота чисел
и
.
Евклид
доказал, что всякое число вида
—
совершенное
, если
— простое, а
Эйлер
показал, что все чётные совершенные числа имеют такой вид
; поэтому тест Люка — Лемера фактически позволяет найти все чётные совершенные числа.
Именно этот тест лежит в основе проекта
распределённых вычислений
GIMPS
, занимающегося поиском новых простых чисел Мерсенна
, хотя до сих пор не доказано, что их бесконечно много
.
Также данный тест используется для тестирования
аппаратного обеспечения
. Так, в 1992 году специалисты компании
протестировали новый
суперкомпьютер
компании
Cray
, используя программу, написанную
для поиска простых чисел Мерсенна. В результате за 19 часов работы программы было открыто простое число
.
Abhijit Das.
Computational Number Theory. — 2-е изд. — CRC Press, 2016. — P. 290—292. — 614 p. — (Discrete Mathematics and Its Applications). —
ISBN 1482205823
.
↑
Крэндалл Р., Померанс К.
Простые числа. Криптографические и вычислительные аспекты = Prime Numbers: A Computational Perspective / пер. с англ. А. В. Бегунца, Я. В. Вегнера, В. В. Кнотько, С. Н. Преображенского, И. С. Сергеева. —
М.
: УРСС, Книжный дом «Либроком», 2011. — С. 198—216, 498—500, 510—513. — 664 с. —
ISBN 978-5-453-00016-6
, 978-5-397-02060-2.
↑
Трост Э.
Простые числа = Primzahlen / под ред. А. О. Гельфонда, пер. с нем. Н. И. Фельдмана. —
М.
: Физматлит, 1959. — С. 42—46. — 137 с. —
15 000 экз.
↑
Уильямс Х.
Проверка чисел на простоту с помощью вычислительных машин = Primality testing on a computer //
Лупанов О. Б.
Кибернетический сборник : журнал / пер. с англ. С. В. Чудова. —
М.
: Мир, 1986. —
Вып. 23
. —
С. 51—99
. —
ISBN N/A, ББК 32.81, УДК 519.95
.
(англ.)
.
GIMPS
(21 декабря 2018). Дата обращения: 28 февраля 2019.
15 августа 2020 года.
↑
Koshy T.
Elementary Number Theory with Applications. — 2nd edition. — Academic Press, 2007. — P. 369—381. — 800 p. —
ISBN 9780080547091
.
Bach E., Shallit J.
Algorithmic Number Theory, Vol. 1: Efficient Algorithms. — The MIT Press, 1996. — P. 41—66. — 496 p. — (Foundations of Computing). —
ISBN 978-0262024051
.
Хассе Г.
Лекции по теории чисел = Vorlesungen über die Theorie der algebraischen Zahlen / под ред. И. Р. Шафаревича, пер. с нем. В. Б. Демьянова. —
М.
: Издательство иностранной литературы, 1953. — С. 36—44. — 528 с.
(англ.)
.
GIMPS
. Дата обращения: 4 декабря 2016.
20 ноября 2016 года.