~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ F371395AC71C7D0A53EA6031A09E6A86__1715060040 ✰
Заголовок документа оригинал.:
✰ Primality test - Wikipedia ✰
Заголовок документа перевод.:
✰ Тест на примитивность — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Primality_test ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/f3/86/f371395ac71c7d0a53ea6031a09e6a86.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/f3/86/f371395ac71c7d0a53ea6031a09e6a86__translat.html ✰
Дата и время сохранения документа:
✰ 08.06.2024 20:43:18 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 7 May 2024, at 08:34 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Тест на примитивность — Википедия, бесплатная энциклопедия Jump to content

Тест на примитивность

Из Википедии, бесплатной энциклопедии

Тест на простоту — это алгоритм определения того, является ли входное число простым . Среди других областей математики он используется для криптографии . В отличие от факторизации целых чисел , тесты на простоту обычно не дают простых множителей , а лишь указывают, является ли входное число простым или нет. Факторизация считается сложной в вычислительном отношении проблемой, тогда как проверка на простоту сравнительно проста ( время ее выполнения зависит полиномиально от размера входных данных). Некоторые тесты на простоту доказывают, что число простое, в то время как другие, такие как Миллер-Рабин, доказывают, что число является составным . Следовательно, последние правильнее было бы называть тестами на составность , а не тестами на простоту.

Простые методы [ править ]

Самый простой тест на простоту — это пробное деление : по заданному входному числу ли оно , проверьте, делится на любое простое число от 2 до (т.е. не оставляет ли деление остатка ). Если так, то является составным . В противном случае это просто. [1] Для любого делителя , должен быть еще один делитель и простой делитель из , и поэтому ищем не более простых делителей достаточно.

Например, рассмотрим число 100, делителями которого являются следующие числа:

1, 2, 4, 5, 10, 20, 25, 50, 100.

Когда все возможные делители до проверяются, некоторые делители будут обнаружены дважды . Чтобы это заметить, рассмотрим список пар делителей 100:

.

Продукты прошлого являются противоположностью продуктов, появившихся ранее. Например, и являются противоположностью друг друга. Далее, соотношение двух делителей и . Это наблюдение распространяется на все : все пары делителей содержат делитель, меньший или равный , поэтому алгоритму нужно искать только делители, меньшие или равные чтобы гарантировать обнаружение всех пар делителей. [1]

Кроме того, 2 — простое число, делящее 100, что сразу доказывает, что 100 не является простым числом. каждое положительное целое число, кроме 1, делится хотя бы на одно простое число Согласно основной теореме арифметики . Следовательно, алгоритму нужно искать только простые делители, меньшие или равные .

В качестве другого примера рассмотрим, как этот алгоритм определяет простоту числа 17. , и единственные простые числа являются 2 и 3. Ни одно из них не делит 17, что доказывает, что 17 — простое число. В качестве последнего примера рассмотрим число 221. Имеем , и простые числа равны 2, 3, 5, 7, 11 и 13. Проверив каждое, обнаруживается, что , доказывая, что 221 не является простым числом.

В тех случаях, когда невозможно вычислить список простых чисел , также можно просто (и медленно) проверить все числа между и для делителей. Довольно простая оптимизация состоит в проверке делимости на 2 и только на нечетные числа между 3 и 3. , поскольку из делимости на четное число следует деление на 2.

Этот метод можно усовершенствовать и дальше. Обратите внимание, что все простые числа больше 3 имеют вид для неотрицательного целого числа и . Действительно, каждое целое число имеет вид для положительного целого числа и . Поскольку 2 деления , и , и 3 деления и , единственные возможные остатки по модулю 6 для простого числа больше 3 — это 1 и 5. Таким образом, более эффективный тест на простоту для состоит в том, чтобы проверить, является ли делится на 2 или 3, а затем проверить все числа вида и которые . Это почти в три раза быстрее, чем проверка всех чисел до .

Обобщая далее, все простые числа, большие ( c primorial ) имеют вид для положительные целые числа, , и взаимно простой с . Например, рассмотрим . Все целые числа имеют вид для целые числа с . Теперь 2 деления , 3 деления , и 5 делит . Таким образом, все простые числа больше 30 имеют вид для . Конечно, не все числа вида с взаимно простой с являются простыми. Например, не является простым, хотя 17 взаимно просто .

Как растет, доля взаимно простых остатков к остаткам уменьшается, и поэтому время проверки уменьшается (хотя проверять делимость на все простые числа, меньшие ). Наблюдения, аналогичные предыдущим, можно применить рекурсивно , получив Решето Эратосфена .

Один из способов ускорить эти методы (и все остальные, упомянутые ниже) — предварительно вычислить и сохранить список всех простых чисел до определенной границы, например, всех простых чисел до 200. (Такой список можно вычислить с помощью Решето Эратосфена или алгоритм, проверяющий каждое приращение против всех известных простых чисел ). Тогда перед тестированием для простоты крупномасштабным методом, можно сначала проверить на делимость на любое простое число из списка. Если оно делится на любое из этих чисел, то оно составное, и любые дальнейшие проверки можно пропустить.

Простой, но очень неэффективный тест на простоту использует теорему Вильсона , которая утверждает, что является простым тогда и только тогда, когда:

Хотя этот метод требует около модульные умножения, что делает их непрактичными, теоремы о простых числах и модульных остатках составляют основу многих более практических методов.

Эвристические тесты [ править ]

Это тесты, которые, кажется, хорошо работают на практике, но не проверены и, следовательно, с технической точки зрения вообще не являются алгоритмами. Тест Ферма и тест Фибоначчи — простые примеры, и они очень в сочетании эффективны. Джон Селфридж предположил, что если p — нечетное число и p ≡ ±2 (по модулю 5), то p будет простым, если выполняются оба следующих условия:

  • 2 р -1 ≡ 1 (по модулю p ),
  • f p +1 ≡ 0 (mod p ),

где fk k е - число Фибоначчи . Первое условие — это критерий простоты Ферма по основанию 2.

В общем случае, если p ≡ a (mod x 2 +4), где a — квадратичный невычет (mod x 2 +4) то p должно быть простым, если выполняются следующие условия:

  • 2 р -1 ≡ 1 (по модулю p ),
  • ж ( 1 ) п ​​+1 ≡ 0 (mod p ),

f ( x ) k k - й полином Фибоначчи в точке x .

Селфридж, Карл Померанс и Сэмюэл Вагстафф вместе предлагают 620 долларов за контрпример. [2]

Вероятностные тесты [ править ]

Вероятностные тесты более строгие, чем эвристики, поскольку они обеспечивают доказуемые границы вероятности быть обманутым составным числом. Многие популярные тесты на простоту являются вероятностными тестами. В этих тестах, помимо проверяемого числа n , используются некоторые другие числа a , которые выбираются случайным образом из некоторого выборочного пространства ; обычные рандомизированные тесты на простоту никогда не сообщают о простом числе как о составном, но составное число может быть указано как простое. Вероятность ошибки можно уменьшить, повторяя тест с несколькими независимо выбранными значениями a ; для двух часто используемых тестов для любого составного n по крайней мере половина составность n a обнаруживает поэтому , k повторений уменьшают вероятность ошибки не более чем до 2 - к , который можно сделать сколь угодно малым, увеличив k .

Базовая структура рандомизированных тестов на простоту выглядит следующим образом:

  1. Случайным образом выберите число a .
  2. Проверить равенство (соответствующее выбранному критерию) числа a и заданного числа n . Если равенство не выполняется, то n — составное число, а a свидетель составности, и тест прекращается.
  3. Возвращайтесь к первому шагу, пока не будет достигнута требуемая точность.

Если после одной или нескольких итераций n не окажется составным числом, его можно объявить, вероятно, простым .

Ферма на Тест простоту

Самый простой вероятностный тест простоты — это тест простоты Ферма (фактически тест на составность). Это работает следующим образом:

Учитывая целое число n , выберите некоторое целое число, взаимно простое с n , и вычислите н − 1 по модулю н . Если результат отличается от 1, то n составное. Если это 1, то n может быть простым.

Если н −1 (по модулю n ) равно 1, но n не является простым, тогда n называется псевдопростое, чтобы основать . На практике, если а н −1 (по модулю n ) равно 1, то n обычно простое. Но вот контрпример: если n = 341 и a = 2, то

хотя 341 = 11·31 является составным. Фактически, 341 — это наименьшее псевдопростое число по основанию 2 (см. рис. 1). [3] ).

Существует только 21853 псевдопростых числа по основанию 2, размер которых меньше 2,5 × 10. 10 (см. стр. 1005 [3] ). Это означает, что для n до 2,5 × 10 10 , если 2 н −1 (по модулю n ) равно 1, то n является простым, если только n не является одним из этих 21853 псевдопростых чисел.

Некоторые составные числа ( числа Кармайкла ) обладают тем свойством, что н − 1 равен 1 (по модулю n ) для каждого a , взаимно простого с n . Самый маленький пример — n = 561 = 3·11·17, для которого 560 равно 1 (по модулю 561) для всех чисел , взаимно простых с 561. Тем не менее, тест Ферма часто используется, если необходим быстрый просмотр чисел, например, на этапе генерации ключа криптографического алгоритма с открытым ключом RSA .

Критерий простоты Миллера-Рабина и Штрассена Соловея -

Критерий простоты Миллера -Рабина и тест простоты Соловея-Штрассена представляют собой более сложные варианты, которые обнаруживают все составные числа (опять же, это означает: для каждого составного числа n не менее 3/4 (Миллер-Рабин) или 1/2 (Соловей –Штрассен) чисел a являются свидетелями составности n ). Это также тесты на составность.

Критерий простоты Миллера-Рабина работает следующим образом: Учитывая целое число n , выберите некоторое положительное целое число a < n . Пусть 2 с d = n − 1, где d нечетно. Если

и

для всех

тогда n составное и a является свидетелем составности. В противном случае n может быть простым, а может и не быть простым. Критерий Миллера-Рабина является сильным вероятностным простым критерием (см. PSW [3] стр. 1004).

Тест на простоту Соловея – Штрассена использует другое равенство: учитывая нечетное число n , выберите некоторое целое число a < n , если

, где это символ Якоби ,

тогда n составное и a является свидетелем составности. В противном случае n может быть простым, а может и не быть простым. Критерий Соловея – Штрассена представляет собой тест Эйлера на вероятность простых чисел (см. PSW [3] стр. 1003).

Для каждого отдельного значения критерий Соловея-Штрассена слабее критерия Миллера-Рабина. Например, если n = 1905 и a = 2, то критерий Миллера-Рабина показывает, что n является составным, а критерий Соловея-Штрассена - нет. Это потому, что 1905 год — это Эйлер. псевдопростое основание 2, но не сильное псевдопростое основание 2 (это показано на рисунке 1 PSW [3] ).

Фробениуса на простоту Тест

Тесты на простоту Миллера-Рабина и Соловея-Штрассена просты и работают намного быстрее, чем другие общие тесты на простоту. Одним из методов дальнейшего повышения эффективности в некоторых случаях является тест псевдопростоты Фробениуса ; Раунд этого теста занимает примерно в три раза больше времени, чем раунд Миллера-Рабина, но достигается граница вероятности, сравнимая с семью раундами Миллера-Рабина.

Тест Фробениуса является обобщением теста Люка на вероятность простых чисел .

простоту Бэйли- на ПСВ Тест

Тест простоты Бэйли-ПСВ — это вероятностный тест простоты, который сочетает в себе тест Ферма или Миллера-Рабина с тестом вероятного простого числа Лукаса для получения теста простоты, не имеющего известных контрпримеров. То есть не существует известных составных n , для которых этот тест показал бы, что n , вероятно, простое. [4] [5] Показано, что для n нет контрпримеров. .

Другие тесты [ править ]

Леонард Адлеман и Минг-Де Хуанг представили безошибочный (но с ожидаемым полиномиальным временем) вариант теста на простоту эллиптической кривой . В отличие от других вероятностных тестов, этот алгоритм выдает сертификат простоты и, таким образом, может использоваться для доказательства того, что число является простым. [6] На практике алгоритм непомерно медленный.

Если бы были доступны квантовые компьютеры , простоту можно было бы проверять асимптотически быстрее , чем с помощью классических компьютеров. Сочетание алгоритма Шора , метода факторизации целых чисел, с тестом на простоту Поклингтона могло бы решить проблему в . [7]

Быстрые тесты детерминированные

Ближе к началу 20-го века было показано, что следствие малой теоремы Ферма можно использовать для проверки простоты. [8] В результате появился тест на простоту Поклингтона . [9] Однако, поскольку этот тест требует частичной факторизации n - 1 , время выполнения в худшем случае все равно было довольно медленным. Первым детерминистическим тестом на простоту, значительно более быстрым, чем наивные методы, был тест циклотомии ; можно доказать, что его время выполнения равно O ((log n ) c журнал журнал журнал n ), где n — число, которое нужно проверить на простоту, а c — константа, независимая от n . Было сделано множество дальнейших улучшений, но ни одно из них не имело полиномиального времени работы. (Время выполнения измеряется размером входных данных, который в данном случае равен ~ log n , то есть количеству битов, необходимых для представления числа n .) тест на простоту эллиптической кривой Можно доказать, что выполняется за O( (журнал n ) 6 ), если некоторые гипотезы аналитической теории чисел верны. [ который? ] Аналогичным образом, согласно обобщенной гипотезе Римана , можно доказать, что детерминированный тест Миллера , который составляет основу вероятностного теста Миллера-Рабина, работает в Õ ((log n ) 4 ). [10] На практике этот алгоритм медленнее, чем два других, для чисел, с которыми вообще можно иметь дело. Поскольку реализация этих двух методов довольно сложна и создает риск ошибок программирования, часто предпочитаются более медленные, но более простые тесты.

изобрели первый доказуемо безусловный детерминированный полиномиальный временной тест на простоту В 2002 году Маниндра Агравал , Нирадж Каял и Нитин Саксена . Тест простоты AKS выполняется за Õ((log n ) 12 ) (улучшено до Õ((log n ) 7.5 ) [11] в опубликованной версии их статьи), что в дальнейшем можно свести к Õ((log n ) 6 ), если гипотеза Софи Жермен верна. [12] Впоследствии Ленстра и Померанс представили версию теста, работающую во времени Õ((log n ) 6 ) безоговорочно. [13]

Агравал, Каял и Саксена предлагают вариант своего алгоритма, который будет работать за Õ((log n ) 3 ) если гипотеза Агравала верна; однако эвристический аргумент Хендрика Ленстры и Карла Померанса предполагает, что это, вероятно, неверно. [11] Модифицированная версия гипотезы Агравала, гипотеза Агравала-Поповича, [14] может все еще быть правдой.

Сложность [ править ]

В теории сложности вычислений формальный язык, соответствующий простым числам, обозначается ПРОСТЫМИ числами. Легко показать, что ПРОСТОЕ находится в Co-NP : его дополнение КОМПОЗИТЫ находится в NP, потому что можно определить составность, недетерминированно угадывая фактор.

В 1975 году Воан Пратт показал, что существует сертификат простоты, который можно проверить за полиномиальное время, и, таким образом, PRIMES находится в NP и, следовательно, в . см. в сертификате первичности Подробную информацию .

Последующее открытие алгоритмов Соловея-Штрассена и Миллера-Рабина поместило PRIMES в coRP . В 1992 году алгоритм Адлемана – Хуанга [6] уменьшил сложность до , что заменило результат Пратта.

Тест на простоту Адлемана -Померанса-Румели 1983 года поместил ПРОСТОТЫ в QP ( квазиполиномиальное время ), которое, как известно, не сравнимо с классами, упомянутыми выше.

Из-за его практичности, алгоритмов с полиномиальным временем, предполагающих гипотезу Римана, и других подобных доказательств, долгое время подозревалось, но не было доказано, что простота может быть решена за полиномиальное время. Существование теста простоты AKS наконец решило этот давний вопрос и поместило PRIMES в P . Однако неизвестно, является ли PRIMES P-полным , и неизвестно, принадлежит ли он классам, лежащим внутри P таким как NC или L. , Известно, что ПРАЙМСА нет в AC 0 . [15]

Теоретико-числовые методы [ править ]

Существуют определенные теоретико-числовые методы проверки того, является ли число простым, например тест Лукаса и тест Прота . Эти тесты обычно требуют факторизации n + 1, n - 1 или аналогичной величины, что означает, что они бесполезны для общего тестирования простоты, но они часто весьма эффективны, когда тестируемое число n известно, что имеет специальное число. форма.

Тест Люка основан на том факте, что мультипликативный порядок числа a по модулю n равен n - 1 для простого числа n , когда a является примитивным корнем по модулю n . Если мы можем показать, что a является примитивным для n , мы можем показать, что n является простым.

Ссылки [ править ]

  1. ^ Перейти обратно: а б Ризель (1994), стр. 2-3.
  2. ^ Джон Селфридж#Гипотеза Селфриджа о тестировании на простоту .
  3. ^ Перейти обратно: а б с д Это Померанс, Карл ; Селфридж, Джон Л .; Вагстафф, Сэмюэл С. младший (июль 1980 г.). «Псевдопростые числа до 25·10 9 . (PDF) Математика вычислений . 35 (151): 1003–1026. doi : 10.1090/S0025-5718-1980-0572872-7 .
  4. ^ Бэйли, Роберт; Вагстафф, Сэмюэл С. младший (октябрь 1980 г.). «Лукас Псевдопраймс» (PDF) . Математика вычислений . 35 (152): 1391–1417. дои : 10.1090/S0025-5718-1980-0583518-6 . МР   0583518 .
  5. ^ Бэйли, Роберт; Фиори, Эндрю; Вагстафф, Сэмюэл С. младший (июль 2021 г.). «Усиление теста на первичность Бэйли-PSW». Математика вычислений . 90 (330): 1931–1955. arXiv : 2006.14425 . дои : 10.1090/mcom/3616 . S2CID   220055722 .
  6. ^ Перейти обратно: а б Адлеман, Леонард М .; Хуан, Мин-Де (1992). Проверка простоты и абелевы многообразия над конечным полем . Конспекты лекций по математике. Том. 1512. Шпрингер-Верлаг . ISBN  3-540-55308-8 .
  7. ^ Чау, ХФ; Ло, Х.-К. (1995). «Тест на простоту посредством квантовой факторизации». arXiv : Quant-ph/9508005 .
  8. ^ Поклингтон, ХК (1914). «Определение простой или составной природы больших чисел по теореме Ферма». Камбр. Фил. Соц. Проц . 18 :29–30. ЖФМ   45.1250.02 .
  9. ^ Вайсштейн, Эрик В. «Теорема Поклингтона» . Математический мир .
  10. ^ Гэри Л. Миллер (1976). «Гипотеза Римана и тесты на первичность» . Журнал компьютерных и системных наук . 13 (3): 300–317. дои : 10.1016/S0022-0000(76)80043-8 .
  11. ^ Перейти обратно: а б Агравал, Маниндра; Каял, Нирадж; Саксена, Нитин (2004). «Простые числа находятся в P» (PDF) . Анналы математики . 160 (2): 781–793. дои : 10.4007/анналы.2004.160.781 .
  12. ^ Агравал, Маниндра; Каял, Нирадж; Саксена, Нитин (2004). «ПРАЙМС находится в P» (PDF) . Анналы математики . 160 (2): 781–793. дои : 10.4007/анналы.2004.160.781 .
  13. ^ Карл Померанс и Хендрик В. Ленстра (20 июля 2005 г.). «Тестирование простоты с гауссовскими периодами» (PDF) .
  14. ^ Попович Роман (30 декабря 2008 г.). «Заметка о гипотезе Агравала» (PDF) .
  15. ^ Э. Аллендер, М. Сакс и И.Е. Шпарлинский, Нижняя оценка простоты, J. Comp. Сист. наук. 62 (2001), стр. 356–366.

Источники [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: F371395AC71C7D0A53EA6031A09E6A86__1715060040
URL1:https://en.wikipedia.org/wiki/Primality_test
Заголовок, (Title) документа по адресу, URL1:
Primality test - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)