Тест простоты Бейли-ПСВ — вероятностный или, возможно, детерминированный алгоритм проверки простоты , который определяет, является ли число составным или, вероятно, простым . Он назван в честь Роберта Бейли, Карла Померанса , Джона Селфриджа и Сэмюэля Вагстаффа .
Тест Бейли-ПСВ представляет собой комбинацию сильного теста Ферма на вероятные простые числа по основанию 2 и стандартного или сильного теста Люка на вероятные простые числа . Тесты Ферма и Люка имеют свои собственные списки псевдопростых чисел, то есть составных чисел, которые проходят тест. Например, первые десять сильных псевдопростых чисел по основанию 2 — это
Первые десять сильных псевдопростых чисел Лукаса (с параметрами Лукаса ( P , Q ), определенными методом Селфриджа A) — это
Нет известного совпадения между этими списками, и есть даже доказательства того, что числа, как правило, имеют разный вид, на самом деле даже со стандартным и не сильным тестом Лукаса нет известного совпадения. Например, псевдопростые числа Ферма по основанию 2, как правило, попадают в класс остатков 1 (mod m ) для многих малых m , тогда как псевдопростые числа Люка, как правило, попадают в класс остатков −1 (mod m ). [1] : §6 [2] : Таблица 2 и §5 В результате число, которое проходит как сильный тест Ферма по основанию 2, так и сильный тест Люка, с большой вероятностью будет простым. Если вы выберете случайное основание, может быть некоторое составное n, которое пройдет как тесты Ферма, так и тесты Люка. Например, n=5777 является сильным psp по основанию 76, а также сильным псевдопростым числом Люка.
Ни одно составное число ниже 2 64 (приблизительно 1,845·10 19 ) не проходит сильный или стандартный тест Бейли–PSW, [3] этот результат был также отдельно проверен Чарльзом Грейтхаусом в июне 2011 года. Следовательно, этот тест является детерминированным тестом простоты чисел ниже этой границы. Также нет известных составных чисел выше этой границы, которые прошли бы тест, другими словами, нет известных псевдопростых чисел Бейли–PSW.
В 1980 году авторы Померанс, Селфридж и Вагстафф предложили 30 долларов за открытие контрпримера, то есть составного числа, которое прошло этот тест. Ричард Гай неверно заявил, что стоимость этого приза была увеличена до 620 долларов, но он путал последовательность Лукаса с последовательностью Фибоначчи , и его замечания на самом деле применимы только к гипотезе Селфриджа . [4] По состоянию на июнь 2014 года приз остается невостребованным. Однако эвристический аргумент Померанса предполагает, что существует бесконечно много контрпримеров. [5] Более того, Чен и Грин [6] [7] построили множество S из 1248 простых чисел, такое, что среди почти 2 1248 произведений различных простых чисел в S может быть около 740 контрпримеров. Однако они говорят о более слабом тесте PSW, который заменяет тест Лукаса тестом Фибоначчи.
Пусть n — нечетное положительное целое число, простоту которого мы хотим проверить.
Замечания.
Списки псевдопростых чисел с разными основаниями существенно пересекаются.
Выберите основание a . Если n является псевдопростым числом по основанию a , то n , скорее всего, будет одним из тех немногих чисел, которое является псевдопростым по многим основаниям. [10]
Например, n = 341 является псевдопростым числом по основанию 2. Из теоремы 1 на странице 1392 [2] следует , что существует 100 значений a (mod 341), для которых 341 является псевдопростым числом по основанию a . (Первые десять таких a — это 1, 2, 4, 8, 15, 16, 23, 27, 29 и 30). Доля таких a по сравнению с n обычно намного меньше.
Следовательно, если n является псевдопростым числом по основанию a , то n с большей вероятностью, чем в среднем, будет псевдопростым числом по некоторому другому основанию. [1] : 1020 Например, существует 21853 псевдопростых числа по основанию 2 вплоть до 25·10 9 . Это всего лишь около двух из каждого миллиона нечетных целых чисел в этом диапазоне. Однако: [1] : 1021
Число 29341 является наименьшим псевдопростым числом для оснований от 2 до 12. Все это говорит о том, что вероятные тесты на простоту для разных оснований не являются независимыми друг от друга, так что выполнение тестов Ферма на простоту для все большего и большего количества оснований будет давать убывающую отдачу. С другой стороны, вычисления в [2] : 1400 и вычисления до 2 64, упомянутые выше, говорят о том, что вероятные тесты Ферма и Люка на простоту независимы , так что комбинация этих типов тестов может составить мощный тест на простоту, особенно если используются сильные формы тестов.
Обратите внимание, что число, которое является псевдопростым по всем простым основаниям 2, ..., p, также является псевдопростым по всем основаниям, которые являются p-гладкими .
Также существует перекрытие между сильными псевдопростыми числами с разными основаниями. Например, 1373653 является наименьшим сильным псевдопростым числом с основаниями от 2 до 4, а 3215031751 является наименьшим сильным псевдопростым числом с основаниями от 2 до 10. Арно [11] дает 397-значное число Кармайкла N , которое является сильным псевдопростым числом для всех простых оснований, меньших 307. Поскольку это N является числом Кармайкла, N также является (не обязательно сильным) псевдопростым числом для всех оснований, меньших p , где p является 131-значным наименьшим простым множителем N. Быстрый расчет показывает, что N не является вероятным простым числом Лукаса, когда D , P и Q выбираются описанным выше методом, поэтому это число будет правильно определено тестом Бейли–PSW как составное.
Следующие системы компьютерной алгебры и пакеты программного обеспечения используют некоторые версии теста простоты Бейли–ПСВ.
Функция isprime в Maple [12] , функция PrimeQ в Mathematica (которая уже использует версию Baillie–PSW 2020 года [13] , функции isprime и ispseudoprime в PARI/GP [14] и функция is_pseudoprime в SageMath [15] — все они используют комбинацию сильного вероятного теста Ферма на простоту и теста Лукаса. Функция primep в Maxima использует такой тест для чисел больше 341550071728321. [16]
В библиотеке FLINT имеются функции n_is_probabprime и n_is_probabprime_BPSW , которые используют комбинированный тест, а также другие функции, которые выполняют тесты Ферма и Люка по отдельности. [17]
Класс BigInteger в стандартных версиях Java и в реализациях с открытым исходным кодом, таких как OpenJDK, имеет метод isProbablePrime . Этот метод выполняет один или несколько тестов Миллера–Рабина со случайными основаниями. Если n , проверяемое число, имеет 100 бит или более, этот метод также выполняет несильный тест Лукаса, который проверяет, равно ли U n+1 0 (mod n ). [18] [19] Использование случайных оснований в тестах Миллера–Рабина имеет преимущество и недостаток по сравнению с выполнением одного теста с основанием 2, как указано в тесте Бейли–PSW. Преимущество состоит в том, что со случайными основаниями можно получить границу вероятности того, что n является составным числом. Недостаток состоит в том, что, в отличие от теста Бейли–PSW, нельзя с уверенностью сказать, что если n меньше некоторой фиксированной границы, такой как 2 64 , то n является простым числом.
В Perl модули Math::Primality [20] и Math::Prime::Util [21] [22] имеют функции для выполнения сильного теста Бейли–PSW, а также отдельные функции для сильных тестов псевдопростых чисел и Люка. В Python библиотека NZMATH [23] имеет сильные тесты псевдопростых чисел и Люка, но не имеет объединенной функции. Библиотека SymPy [ 24] реализует это.
Начиная с версии 6.2.0, функция mpz_probab_prime_p библиотеки арифметики множественной точности GNU использует сильный тест Лукаса и тест Миллера–Рабина; предыдущие версии не использовали тест Бейли–PSW. [25] Функции IsProbablePrime и IsProbablyPrime библиотеки Magma используют 20 тестов Миллера–Рабина для чисел > 34·10 13 , но не объединяют их с тестом Люка на вероятное простое число. [26]
Криптографические библиотеки часто имеют функции проверки простых чисел. Альбрехт и др. обсуждают тесты, используемые в этих библиотеках. Некоторые используют комбинированный тест Ферма и Лукаса; многие этого не делают. [27] : Таблица 1 Для некоторых из последних Альбрехт и др. смогли построить составные числа, которые библиотеки объявили простыми.