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