Принцип алгоритма:
Миллер-Рабин — это вероятностный тест простоты, основанный на расширении малой теоремы Ферма. Для нечётного числа n запишите n-1 в виде 2^r × d, затем проверьте, выполняется ли:
a^d ≡ 1 (mod n) 或 a^(2^i × d) ≡ -1 (mod n) 对某个 0 ≤ i < r
Количество раундов тестирования и точность:
- Вероятностное тестирование:Случайный выбор основания a; каждый раунд тестирования снижает погрешность до 1/4
- k раундов тестирования:Теоретическая погрешность ≤ (1/4)^k, фактическая погрешность значительно ниже
- Детерминированное тестирование:Для n < 3 317 044 064 679 887 385 961 981, использование набора оснований {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37} даёт 100% точный результат
Особые случаи:
- Малые простые числа:Числа 2, 3, 5, 7 определяются напрямую
- Чётные числа:Все чётные числа, кроме 2, являются составными
- Числа Кармайкла:Числа, проходящие тест Ферма, но на самом деле являющиеся составными (например, 561), корректно идентифицируются тестом Миллера-Рабина