Тест Люка — Лемера
Те́ст Люка́ — Ле́мера (англ. Lucas-Lehmer test, сокр. LLT) — полиномиальный, детерминированный и безусловный (то есть не зависящий от недоказанных гипотез) тест простоты для чисел Мерсенна. Сформулирован Эдуардом Люка в 1878 году и доказан Лемером в 1930 году.
При заданном простом числе тест позволяет за полиномиальное время от битовой длины числа Мерсенна определить, является простым или составным. Доказательство справедливости теста существенно опирается на функции Люка, что позволило обобщить тест Люка — Лемера на некоторые числа, вид которых отличен от чисел Мерсенна.
Благодаря этому тесту самыми большими известными простыми числами почти всегда были простые числа Мерсенна, причём даже до появления компьютеров; именно он лежит в основе проекта распределённых вычислений GIMPS, занимающегося поиском новых простых чисел Мерсенна. Также он интересен своей связью с чётными совершенными числами.
Формулировка
Тест основывается на следующем критерии простоты чисел Мерсенна[1]:
|
Для проверки простоты последовательность чисел вычисляется по модулю числа (то есть вычисляются не сами числа , длина которых растёт экспоненциально, а остатки от деления на , длина которых ограничена битами). Последнее число в этой последовательности называется вычетом Люка — Лемера[3]. Таким образом, число Мерсенна является простым тогда и только тогда, когда число — нечётное простое и вычет Люка — Лемера равен нулю. Сам алгоритм можно записать в виде псевдокода[4]:
LLT(p) ►Вход: простое нечётное число p S = 4 k = 1 M = 2p − 1 До тех пока k != p - 1 выполнять S = ((S × S) − 2) mod M k += 1 Конец цикла Если S = 0 выполнять Возвратить ПРОСТОЕ иначе Возвратить СОСТАВНОЕ Конец условия
Значения , для которых справедлив критерий простоты, образуют последовательность: [5][6][7].
Не обязательно проверять все простые нечётные при непосредственном переборе, поскольку некоторые числа Мерсенна специального вида всегда являются составными, что следует, например, из следующей доказанной Эйлером теоремы[8]:
|
Доказательство
Один из подходов к доказательству основан на использовании функций Люка:
где — корни квадратного уравнения
с дискриминантом причём и взаимно просты.
В частности, при доказательстве используются некоторые свойства этих функций, а именно[9]:
- 1.
- 2.
- 3.
- 4. Если , , и
- ,
- то
- 5. Если — простое, такое, что взаимно просто с , то делит нацело ,
- где , а — символ Лежандра.
Схема доказательства[9]:
Необходимость
Из свойства 4. по модулю при , , следует:
- ,
а по свойству 2.
- ,
поэтому
и
, поэтому если — простое, то и из последних двух свойств делит
Далее, из свойств 1. и 2.
- ,
но по свойству 3.
- ,
то есть делит , а значит и .
Достаточность
Если делит , то из доказательства необходимости следует, что оно делит и . взаимно просто с по свойству 1., а по свойству 2. — делит . Но тогда каждый простой делитель числа представим в виде , то есть — простое.
История
Критерий простоты был предложен французским математиком Люка в 1878 году. В частности, Люка показал, что алгоритм позволяет проверять простоту для простых [9]. В 1930 году американский математик Лемер полностью доказал справедливость критерия для всех простых нечётных в своей диссертации на соискание учёной степени доктора философии[1].
В 1952 году Робинсон при поддержке Лемера провел вычисления на компьютере SWAC с использованием теста Люка — Лемера, результатом которого стало открытие простых чисел и . Позднее в этом же году были открыты , и [10].
Лёгкость реализации теста и рост вычислительных мощностей компьютеров позволили фактически любому человеку заниматься поиском простых чисел Мерсенна. Так, в 1978 году два американских старшеклассника Лора Никель и Курт Нолл (Лемер преподавал им теорию чисел) за 3 года работы доказали простоту числа , используя суперкомпьютер CDC Cyber 176 в Калифорнийском университете[11].
Наибольшее из известных простых чисел Мерсенна на 2018 год, полученное с помощью теста Люка — Лемера, это [12].
Примеры
Требование нечётности в условии критерия существенно, так как — простое, но .
Число — простое[13]. Действительно,
Применение теста к числу показывает, что оно составное[13]:
Действительно, .
Вычислительная сложность
В рассматриваемом тесте две основные операции: возведение в квадрат и деление по модулю. Эффективный алгоритм деления по модулю числа Мерсенна на компьютере (фактически сводящийся к нескольким операциям битового сдвига) дает следующая теорема[4]:
|
Например, чтобы вычислить остаток от деления числа на , нужно исходное число преобразовать в двоичный вид: , и, согласно теореме, разбивать на две части каждый раз, когда оно превосходит :
При использовании этого способа деления по модулю вычислительная сложность теста будет определяться сложностью алгоритма возведения в квадрат. Длина составляет бит, а алгоритм умножения двух чисел, например, «в столбик», имеет сложность [4]. Так как возведение в квадрат в тесте происходит раз, то вычислительная сложность алгоритма равна [14]. Тест можно ускорить, если использовать алгоритмы быстрого умножения больших целых чисел, например, метод умножения Шёнхаге — Штрассена. Сложность теста в таком случае составит .
Вариации и обобщения
Условие в тесте можно ослабить[8] и потребовать лишь, чтобы , откуда немедленно следует:
- .
В 1930 году Лемер вывел критерий простоты для чисел вида , где , а в 1969 году Ханс Ризель модифицировал тест Люка — Лемера для чисел такого вида, который впоследствии был дополнен Стечкиным[9]. Возможно обобщение теста и на числа вида [15].
Уильямсом были доказаны критерии простоты, аналогичные тесту Люка — Лемера, для чисел вида и , а также для некоторых чисел вида , где — простое [9].
Существует более общий -тест простоты, который применим для любого натурального числа , если известно полное или частичное разложение на простые множители числа или [4].
Применения
Благодаря тесту Люка — Лемера, простые числа Мерсенна удерживают лидерство как самые большие известные простые числа, хотя и до существования теста числа Мерсенна почти всегда были наибольшими простыми. Так, в 1588 году была доказана простота чисел и [16].
Евклид доказал, что всякое число вида — совершенное, если — простое, а Эйлер показал, что все чётные совершенные числа имеют такой вид[17]; поэтому тест Люка — Лемера фактически позволяет найти все чётные совершенные числа.
Именно этот тест лежит в основе проекта распределённых вычислений GIMPS, занимающегося поиском новых простых чисел Мерсенна[18], хотя до сих пор не доказано, что их бесконечно много[19].
Также данный тест используется для тестирования аппаратного обеспечения. Так, в 1992 году специалисты компании AEA Technology протестировали новый суперкомпьютер компании Cray, используя программу, написанную Словински для поиска простых чисел Мерсенна. В результате за 19 часов работы программы было открыто простое число [20].
Примечания
- Jaroma J. H. Note on the Lucas–Lehmer Test (англ.) // Irish Math. Soc. Bulletin — Irish Mathematical Society, 2004. — Vol. 54. — P. 63—72. — ISSN 0791-5578
- последовательность A003010 в OEIS
- 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.
- Robinson R. M. Mersenne and Fermat Numbers (англ.) // Proc. Amer. Math. Soc. / K. Ono — AMS, 1954. — Vol. 5, Iss. 5. — P. 842. — ISSN 0002-9939; 1088-6826 — doi:10.2307/2031878
- Kravitz S. The Lucas–Lehmer Test for Mersenne Numbers (англ.) // Fibonacci Quarterly / C. Cooper — The Fibonacci Association, 1970. — Vol. 8, Iss. 1. — P. 1—3. — ISSN 0015-0517; 2641-340X
- последовательность A018844 в OEIS
- Трост Э. Простые числа = Primzahlen / под ред. А. О. Гельфонда, пер. с нем. Н. И. Фельдмана. — М.: Физматлит, 1959. — С. 42—46. — 137 с. — 15 000 экз.
- Уильямс Х. Проверка чисел на простоту с помощью вычислительных машин = Primality testing on a computer // Лупанов О. Б. Кибернетический сборник : журнал / пер. с англ. С. В. Чудова. — М.: Мир, 1986. — Вып. 23. — С. 51—99. — ISBN N/A, ББК 32.81, УДК 519.95.
- Ribenboim P. The Little Book of Bigger Primes (англ.) — 2nd edition — Springer-Verlag New York, 2004. — P. 75—87. — 356 p. — ISBN 978-0-387-21820-5
- Devlin K. Mathematics (англ.): The New Golden Age — 2nd edition — UK: Penguin Books, 1998. — P. 75—87. — 320 p. — ISBN 978-0-14-193605-5
- GIMPS Project Discovers Largest Known Prime Number: 282,589,933-1 (англ.). GIMPS (21 декабря 2018). Дата обращения: 28 февраля 2019.
- 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.
- Williams H. C. A Class of Primality Tests for Trinomials Which Includes the Lucas-Lehmer Test (англ.) // Pacific Journal of Mathematics — Mathematical Sciences Publishers, 1982. — Vol. 98, Iss. 2. — P. 477—494. — ISSN 0030-8730; 1945-5844 — doi:10.2140/PJM.1982.98.477
- Rosen K. H. Elementary Number Theory and Its Applications (англ.) — 5 — Addison-Wesley, 2004. — P. 261—265. — 744 p. — ISBN 978-0-321-23707-1
- Хассе Г. Лекции по теории чисел = Vorlesungen über die Theorie der algebraischen Zahlen / под ред. И. Р. Шафаревича, пер. с нем. В. Б. Демьянова. — М.: Издательство иностранной литературы, 1953. — С. 36—44. — 528 с.
- Mathematics and Research Strategy (англ.). GIMPS. Дата обращения: 4 декабря 2016.
- Wolf M. Computer Experiments with Mersenne Primes (англ.) // Computational Methods in Science and Technology — 2013. — Vol. 19, Iss. 3. — P. 157—165. — ISSN 1505-0602; 2353-9453 — doi:10.12921/CMST.2013.19.03.157-165 — arXiv:1112.2412
- Clawson C. C. Mathematical Mysteries (англ.): The Beauty and Magic of Numbers — Springer US, 1996. — P. 174. — 314 p. — ISBN 978-0-306-45404-2 — doi:10.1007/978-1-4899-6080-1