Бейли, Банти
- 1 year ago
- 0
- 0
Тест Бейли — Померанца — Селфриджа — Уогстаффа ( БПСВ , BPSW ) — вероятностный алгоритм проверки на простоту , который определяет, является число составным или вероятно простым . Назван по фамилиям его изобретателей — Роберта Бэйли, Карла Померанца , Джона Селфриджа, Сэмюэля Вагстаффа.
Тест сочетает тест Ферма на сильную псевдопростоту по основанию 2 и тест Люка на сильную псевдопростоту . Для тестов Ферма и Люка существуют отдельные списки псевдопростых чисел, то есть составных чисел, которые проходят испытание на простоту. Например, первые десять сильных псевдопростых чисел для испытания Ферма по основанию 2:
Первые десять псевдопростых чисел теста Люка (с параметрами ):
Мощность теста состоит в том, что не существует известных пересечений списков псевдопростых чисел Ферма и псевдопростых чисел Люка. Существуют основания полагать, что в эти списки попадают, как правило, различные типы чисел. Например, псевдопростые по основанию 2, как правило, попадают в класс вычетов 1 по модулю m для многих малых m, в то время как псевдопростые числа Люка, как правило, попадают в класс вычетов −1 по модулю :§6 :Table 2 & §5 . В результате число, которое проходит как сильный тест Ферма, так и сильное испытание Люка, с большой вероятностью будет простым.
Ни одно составное число, меньшее 2 64 (что примерно равно 1,845 · 10 19 ), не проходит тест БПСВ . Таким образом, этот тест можно считать детерминированным тестом простоты для чисел, меньших указанной границы. Также пока не известно ни одно составное число, большее границы, которое проходит тест.
В 1980 году Померанц, Селфридж и Вагстафф предложили вознаграждение в размере $30 тому, кто отыщет контрпример, то есть найдет составное число, которое проходит этот тест. Ричард Гай ошибочно полагал, что размер вознаграждения составляет $620, но он перепутал последовательности Люка и Фибоначчи , и его замечания оказались применимы лишь к одной гипотезе Селфриджа . По состоянию на июнь 2014 года приз так и не был востребован. Тем не менее, эвристический аргумент Померанца указывает на то, что таких контрпримеров существует бесконечно много . Кроме того, Чен и Грин построили множество S, состоящее из 1248 таких простых чисел, что среди 2 1248 произведений различных простых чисел из S может быть около 740 контрпримеров. Однако, они рассматривали более слабый БПСВ-тест, который вместо теста Люка использует тест Фибоначчи.
Пусть — нечётное натуральное число, которое необходимо проверить на простоту.
Комментарии:
В списках псевдопростых чисел по разным основаниям существуют значительные совпадения.
Если — псевдопростое по некоторому основанию , то , вероятно, является псевдопростым и по многим другим основаниям .
Например, псевдопросто по основанию 2. Бейли и Вагстафф доказали , что существует 100 значений (по модулю 341), для которых 341 псевдопросто по основанию . (Первые десять из них: 1, 2, 4, 8, 15, 16, 23, 27, 29, и 30). Количество таких по сравнению с обычно гораздо меньше.
Поэтому, если — псевдопросто по основанию , высока вероятность того, что псевдопросто и по какому-то ещё основанию. Например, существует 21853 псевдопростых чисел по основанию 2 на отрезке от 0 до 25·10 9 . Это лишь около двух чисел на миллион из всех нечетных на этом отрезке. Однако:
29341 — наименьшее псевдопростое по основаниям от 2 до 10. (и по всем 7-гладким основаниям ). Это указывает на то, что вероятностные тесты простоты по разным основаниям не независимы, таким образом проведение теста Ферма по все большему количеству результатов будет отсеивать с каждым разом все меньшее количество псевдопростых. С другой стороны, вычисления вплоть до 2 64 , упомянутые выше, говорят о том, что тесты Ферма и Люка являются независимыми, таким образом, комбинация этих тестов является мощным тестом на простоту, особенно при использовании сильных форм этих тестов.
Существуют также пересечения между сильными псевдопростыми числами по разным основаниям. Например, 1373653 является наименьшим сильным псевдопростым по всем основаниям от 2 до 4 (и по всем 3-гладким ), а 3215031751 — наименьшее сильное псевдопростое по всем основаниям от 2 до 10 (и всем 7-гладким ). Арнольд предъявляет 397-значное составное число N, который является сильным псевдопростым по всем основаниям, меньшим 307. (и по всем 293-гладким ). Поскольку N является числом Кармайкла , N также будет (не обязательно сильно) псевдопростым по всем основаним меньшим р, где р — наименьший 131-значный простой делитель N. В то же время, быстрый подсчет показывает, что N не является псевдопоростым числом Люка, если D, P, Q были выбраны методом, описанным выше, таким образом тест БПСВ определит, что это число составное.
Нижеперечисленные компьютерные системы и программные пакеты используют различные версии теста БПСВ.
Функции
IsPrime
в
Maple
,
PrimeQ
в
Mathematica
,
is_pseudoprime
в
Sage
и функции
isprime
и
ispseudoprime
в
используют сочетание теста Миллера — Рабина (сильного теста Ферма) и теста Люка. Функция
Primep
в
Maxima
использует такой тест для чисел, превосходящих 341550071728321
.
В библиотеке
содержатся функции
n_is_probabprime
и
n_is_probabprime_BPSW
, которые используют комбинированный тест, а также другие функции, которые используют испытания Ферма и Люка по отдельности
.
Класс
BigInteger
в стандартных версиях
Java
и в версиях с открытым исходным кодом, таких как
OpenJDK
, имеет метод
isProbablePrime
. Этот метод проводит один или несколько тестов Миллера — Рабина по случайными основаниям. Если проверяемое число содержит 100 и более битов, этот метод также проводит тест Люка, который проверяет, что
. Использование случайных оснований в тестах Миллера — Рабина имеет как преимущества, так и недостатки по сравнению с проверкой лишь по основанию 2, как в тесте БПСВ. Преимуществом использования случайных оснований является то, что можно получить вероятностную оценку того, что n является составным. Недостатком является то, что, в отличие от теста БПСВ, нельзя с уверенностью сказать, что если n меньше, чем некоторая фиксированная граница, например 2
64
, то n является простым.
В языке
Perl
модули
Math::Primality
и
Math::Prime::Util
содержат функции для выполнения сильного теста БПСВ, а также отдельные функции для сильного теста на псевдопростоту и сильного теста Люка. Библиотека NZMATH
языка
Python
содержит сильный тест на псевдопростоту и сильный тест Люка, но не содержит их комбинации.
Функция
mpz_probab_prime_p
из
GNU Multiple Precision Arithmetic Library
использует тест Миллера — Рабина, но не использует тест Люка
. Функции
IsProbablePrime
и
IsProbablyPrime
из Magma проводят 20 тестов Миллера — Рабина для чисел больших 34·10
13
, однако не используют их сочетание с тестом Люка
.