В теории вычислительных чисел, Wil Алгоритм liams p + 1 представляет собой алгоритм целочисленной факторизации, один из семейства алгоритмов факторизации алгебраических групп. Он был изобретен Хью К. Уильямсом в 1982 году.
Он хорошо работает, если число N, подлежащее факторизации, содержит один или несколько простых множителей p, так что p + 1 гладко., т.е. p + 1 содержит только маленькие множители. Он использует последовательности Люка для выполнения возведения в степень в квадратичном поле.
. Он аналогичен алгоритму p - 1 Полларда.
Выберите некоторое целое число A больше 2, которое характеризует последовательность Люка :
где все операции выполняются по модулю N.
Тогда любое нечетное простое число p делит когда M кратно , где и - это Якоби символ.
Мы требуем, чтобы , то есть D должен быть квадратичным неквадратичным остаток по модулю p. Но поскольку мы не знаем p заранее, перед поиском решения может потребоваться более одного значения A. Если , этот алгоритм вырождается в медленную версию алгоритма p - 1 Полларда.
Итак, для разных значений M мы вычисляем , и когда результат не равен до 1 или N, мы нашли нетривиальный множитель N.
Используемые значения M являются последовательными факториалами, а - это M-е значение последовательности, характеризующейся .
Чтобы найти M-й элемент V последовательности, характеризующейся B, мы переходим к аналогично возведению в степень слева направо:
x: = B y: = (B ^ 2-2) mod N для каждого бита M справа от самого старшего bit doifбит равен 1, затем x: = (x × y - B) mod N y: = (y ^ 2 - 2) mod N else y: = ( x × y - B) mod N x: = (x ^ 2 - 2) mod NV: = x
При N = 112729 и A = 5 последовательные значения :
В этот момент gcd (110229-2,112729) = 139, поэтому 139 - нетривиальный множитель 112729. Обратите внимание, что p + 1 = 140 = 2 × 5 × 7. Число 7! - наименьший факториал, кратный 140, поэтому на этом этапе находится правильный множитель 139.
Используя другое начальное значение, скажем A = 9, мы получаем:
При этом point gcd (91645-2,112729) = 811, поэтому 811 - нетривиальный множитель 112729. Обратите внимание, что p − 1 = 810 = 2 × 5 × 3. Число 9! - наименьший факториал, кратный 810, поэтому на этом этапе находится правильный множитель 811. На этот раз множитель 139 не найден, потому что p − 1 = 138 = 2 × 3 × 23, что не является делителем 9!
Как видно из этих примеров, мы не знаем заранее, имеет ли найденное простое число гладкое p + 1 или p − 1.
Основываясь на p - 1 Полларда и алгоритмах разложения p + 1 Вильямса, Эрик Бах и Джеффри Шаллит разработали методы эффективного разложения n при условии, что у него есть простое число. множитель p такой, что любой k циклотомический многочлен Φk(p) является гладким. Первые несколько круговых многочленов задаются последовательностью Φ 1 (p) = p − 1, Φ 2 (p) = p + 1, Φ 3 (p) = p + p + 1, и Φ 4 (p) = p + 1.