Генерация простых чисел
В вычислительной теории чисел различные алгоритмы позволяют эффективно генерировать простые числа . Они используются в различных приложениях, например, в хешировании , криптографии с открытым ключом и поиске простых чисел в больших количествах.
Для относительно небольших чисел можно просто применить пробное деление к каждому последующему нечетному числу . Первичные сита почти всегда работают быстрее. Отсеивание простых чисел — это самый быстрый из известных способов детерминированного подсчета простых чисел. Существует несколько известных формул, позволяющих вычислить следующее простое число, но не существует известного способа выразить следующее простое число через предыдущие простые числа. Кроме того, не существует известных эффективных общих манипуляций и/или расширений некоторых математических выражений (даже таких, включая более поздние простые числа), которые детерминированно вычисляют следующее простое число.
Премьер-сита
[ редактировать ]Решето простых чисел или решето простых чисел — это быстрый тип алгоритма поиска простых чисел. Есть много простых сит. Простое решето Эратосфена (250-е гг. до н.э.), решето Сундарама (1934 г.), еще более быстрое, но более сложное решето Аткина. [1] (2003) и различные колесные сита. [2] являются наиболее распространенными.
Сито простых чисел работает путем создания списка всех целых чисел до желаемого предела и постепенного удаления составных чисел (которые оно генерирует напрямую), пока не останутся только простые числа. Это наиболее эффективный способ получить большой диапазон простых чисел; однако для поиска отдельных простых чисел прямые тесты на простоту. более эффективными являются [ нужна ссылка ] . Кроме того, на основе формализма сита некоторые целочисленные последовательности (последовательность A240673 в OEIS строятся ), которые также можно использовать для генерации простых чисел в определенных интервалах.
Большие простые числа
[ редактировать ]Для больших простых чисел, используемых в криптографии, доказуемые простые числа могут быть сгенерированы на основе вариантов теста простоты Поклингтона . [3] в то время как вероятные простые числа могут быть сгенерированы с помощью вероятностных тестов простоты, таких как тест простоты Бэйли-ПСВ или тест простоты Миллера-Рабина . И доказуемые, и вероятные тесты на простоту основаны на модульном возведении в степень . Чтобы еще больше снизить вычислительные затраты, целые числа сначала проверяются на наличие маленьких простых делителей с использованием либо сит, аналогичных решету Эратосфена , либо пробного деления .
Целые числа специальных форм, такие как простые числа Мерсенна или простые числа Ферма , можно эффективно проверить на простоту, если факторизация простых чисел p - 1 или p известна + 1.
Сложность
[ редактировать ]Решето Эратосфена вообще считается самым простым в реализации ситом, но оно не является самым быстрым в смысле количества операций на заданный диапазон при больших диапазонах просеивания. В своей обычной стандартной реализации (которая может включать базовую факторизацию колеса для маленьких простых чисел) он может найти все простые числа до N за время. в то время как базовые реализации сита Аткина и колесных сит работают в линейном времени . Специальные версии Решета Эратосфена, использующие принципы колесного сита, могут иметь такую же линейную структуру. временная сложность. Специальная версия Решета Аткина и некоторые специальные версии колесных сит, которые могут включать в себя просеивание с использованием методов Решета Эратосфена, могут работать с сублинейной временной сложностью. . Обратите внимание, что тот факт, что алгоритм уменьшил асимптотическую временную сложность, не означает, что практическая реализация работает быстрее, чем алгоритм с большей асимптотической временной сложностью: если для достижения этой меньшей асимптотической сложности отдельные операции имеют постоянный коэффициент увеличения временной сложности. это может быть во много раз больше, чем для более простого алгоритма, но в пределах практических диапазонов просеивания никогда не будет возможности компенсировать эти дополнительные затраты времени на операцию за счет уменьшенного количества операций для достаточно больших диапазонов.
Некоторые алгоритмы просеивания, такие как Решето Эратосфена с большим количеством факторизации колеса, требуют гораздо меньше времени для меньших диапазонов, чем можно было бы указать их асимптотической временной сложности, поскольку они имеют большие отрицательные постоянные смещения в своей сложности и, таким образом, не достигают этой асимптотической сложности. пока далеко за пределы практических пределов. Например, Решето Эратосфена с комбинацией факторизации колеса и предварительного отбора с использованием маленьких простых чисел до 19 использует время примерно в два раза меньше, чем предсказанное для общего диапазона для диапазона 10. 19 , общий диапазон которого занимает сотни ядер-лет, чтобы отфильтровать лучшие из алгоритмов сита.
Простые наивные сита любого из этих типов сит «одного большого массива» занимают в памяти около Это означает, что 1) они очень ограничены в диапазонах просеивания, которые они могут обрабатывать, объемом доступной оперативной памяти (памяти) и 2) что они обычно довольно медленны, поскольку скорость доступа к памяти обычно становится узким местом скорости больше, чем скорость вычислений, как только размер массива превышает размер кэша ЦП. Обычно реализованные постраничные сегментированные сита как Эратосфена, так и Аткина занимают пространство плюс небольшие буферы сегментов сита, размер которых обычно соответствует размеру кэша ЦП; сегментированные постранично сегментированные колесные сита, включая специальные варианты Решета Эратосфена, обычно занимают гораздо больше места, чем это, в значительной степени, чтобы хранить необходимые представления колес; Вариант Причарда линейного решета временной сложности Эратосфена/колесного решета принимает космос. Специальная версия решета Аткина с лучшей временной сложностью требует места. . Соренсон [4] показывает усовершенствование колесного сита, которое занимает еще меньше места при для любого . Однако есть общее наблюдение: чем больше уменьшается объем памяти, тем больше постоянный коэффициент увеличения затрат времени на операцию, даже если асимптотическая временная сложность может остаться прежней, а это означает, что версии с уменьшенным объемом памяти могут работают во много раз медленнее, чем версии без сокращения памяти, в довольно большом разы.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Аткин, А.; Бернштейн, диджей (2004). «Простейшие сита с использованием бинарных квадратичных форм» (PDF) . Математика вычислений . 73 (246): 1023–1030. Бибкод : 2004MaCom..73.1023A . дои : 10.1090/S0025-5718-03-01501-1 .
- ^ Причард, Пол (1994). Улучшенные сита с дополнительными простыми числами . Симпозиум по алгоритмической теории чисел. стр. 280–288. CiteSeerX 10.1.1.52.835 .
- ^ Плейстед Д.А. (1979). «Быстрая проверка, тестирование и генерация больших простых чисел» . Теор. Вычислить. Наука . 9 (1): 1–16. дои : 10.1016/0304-3975(79)90002-1 .
- ^ Соренсон, JP (1998). «Торговое время на пространство в ситах простых чисел». Алгоритмическая теория чисел . Конспекты лекций по информатике. Том. 1423. стр. 179–195. CiteSeerX 10.1.1.43.9487 . дои : 10.1007/BFb0054861 . ISBN 978-3-540-64657-0 .