АЛГОРИТМ КОНЯГИНА— ПОМЕРАНСА
1 этап.
Заготавливаем таблицу всех простых чисел, не превосходящих [log^2 n] + 1. Присваиваем F(1) : = 1. Затем для каждого а = 2, 3, …. . . , [log n] + 1 осуществляем 2 -й этап, пока не докажем, что n — простое или же что n — составное число.
2 этап.
1 шаг. Если а — составное (см. таблицу 1 этапа), то F(a) : =F(a— 1) и идем на 6 шаг. Если а — простое, и a^F(a-1) ≡ 1 (mod n), то F(a) : = F(a — 1) и идем на 6 шаг. Иначе проверяем, выполняется ли сравнение: a^(n-1) ≡ 1 (mod n). Если нет, то n составное.
6 шаг. Если а ≤ [log ^2 n], то возвращаемся к началу выполнения 2 этапа для следующего значения а. Если же а = [log 2 n] + 1, то n — составное.
2 шаг. Используя разложение n — 1 на простые сомножители, найти порядок числа a (mod n), т. е. наименьшее натуральное число Е(а), такое, что a^E(a) = 1 (mod n).
3 шаг. Проверяем, выполняется ли условие: Если нет, то я — составное.
4 шаг. F(a) : = HOK(F(a - 1), Е(а)).
5 шаг. Если F(a) ≥√n, то n — простое число.
6 шаг. Если а ≤ [log ^2 n], то возвращаемся к началу выполнения 2 этапа для следующего значения а. Если же а = [log 2 n] + 1, то n — составное.