tgoop.com/the_algorithms/4632
Last Update:
Алгоритм Миллера-Рабина
Алгоритм для проверки чисел на простоту. Он основан на принципе ферматовских свидетелей и позволяет с высокой вероятностью определить, является ли число простым или составным.
Алгоритм:
1. Представьте число n
в виде n-1 = 2^s * d
, где d
нечетное.
2. Выберите случайное целое число a в интервале [2, n-2]
.
3. Вычислите a^d mod n
.
4. Если (a^d) mod n = 1
или (a^d) mod n = n-1
, перейдите к следующему шагу.
5. Для i
от 1
до s-1
:
- Вычислите (a^(2^i * d)) mod n
.
- Если (a^(2^i * d)) mod n = n-1
, перейдите к следующему шагу.
- Если (a^(2^i * d)) mod n = 1
, то число n
является составным.
6. Если ни в одном из шагов выше не было обнаружено свидетелей простоты, то число n с высокой вероятностью является простым. В противном случае, число n является составным.
Сложность: O(k * log^3(n))
BY Алгоритмы и структуры данных

Share with your friend now:
tgoop.com/the_algorithms/4632