En teoría computacional de números , el algoritmo p + 1 de Williams es un algoritmo de factorización de enteros , perteneciente a la familia de algoritmos de factorización de grupos algebraicos . Fue inventado por Hugh C. Williams en 1982.
Funciona bien si el número N que se va a factorizar contiene uno o más factores primos p tales que p + 1 sea suave , es decir, p + 1 contiene solo factores pequeños. Utiliza secuencias de Lucas para realizar la exponenciación en un campo cuadrático .
Es análogo al algoritmo p − 1 de Pollard . De hecho, también puede encontrar p si p − 1 es suave, en cuyo caso degenera en una versión lenta del algoritmo de Pollard.
Algoritmo
Elija un número entero A mayor que 2 que caracterice la secuencia de Lucas :
donde todas las operaciones se realizan módulo N.
Entonces cualquier primo impar p dividesiempre que M sea un múltiplo de, dónde yes el símbolo jacobino .
Para diferentes valores de M calculamosy cuando el resultado no es igual a 1 o a N , hemos encontrado un factor no trivial de N.
Para encontrar un p con un p + 1 suave, requerimos que, es decir, D debería ser un no residuo cuadrático módulo p . Pero como no conocemos p de antemano, puede ser necesario probar más de un valor de A antes de encontrar una solución. SiEste algoritmo degenera en una versión lenta del algoritmo p − 1 de Pollard . Esto ocurre el 50% de las veces.
Cálculo de términos de Lucas
Los valores de M utilizados son factoriales sucesivos, yes el valor M de la secuencia caracterizada porPara hallar el elemento M -ésimo V de la secuencia caracterizada por B , procedemos de manera similar a la exponenciación de izquierda a derecha:
x := B y := (B ^ 2 − 2) mod N para cada bit de M a la derecha del bit más significativo hacer si el bit es 1 entonces x := (x × y − B) mod N y := (y ^ 2 − 2) mod N demás y := (x × y − B) mod N x := (x ^ 2 − 2) mod N V := x
Continuación
Existe una extensión de "segunda etapa" al algoritmo p+1 de William, muy similar a la que existe para p-1 y Lenstra ECM. Después de los pasos anteriores (que ahora se denominan "etapa 1"), una continuación permite encontrar p+1 con una condición más relajada: en lugar de requerir que p + 1 tenga todos sus factores menores que B , requerimos que tenga todos sus factores menos uno menores que algún B1 ( igual que el B regular ), y el factor restante menor que algún B2 ≫ B1 . [ 1 ] [ 2 ]
Ejemplo
Con N =112729 y A =5, valores sucesivos deson:
- V 1 de seq(5) = V 1! de seq(5) = 5
- V 2 de seq(5) = V 2! de seq(5) = 23
- V 3 de seq(23) = V 3! de seq(5) = 12098
- V 4 de seq(12098) = V 4! de seq(5) = 87680
- V 5 de seq(87680) = V 5! de seq(5) = 53242
- V 6 de seq(53242) = V 6! de seq(5) = 27666
- V 7 de seq(27666) = V 7! de seq(5) = 110229.
En este punto, mcd(110229-2,112729) = 139, por lo que 139 es un factor no trivial de 112729. Nótese que p+1 = 140 = 2 2 × 5 × 7. El número 7! es el factorial más pequeño que es múltiplo de 140, por lo que el factor adecuado 139 se encuentra en este paso.
Utilizando otro valor inicial, por ejemplo A = 9, obtenemos:
- V 1 de seq(9) = V 1! de seq(9) = 9
- V 2 de seq(9) = V 2! de seq(9) = 79
- V 3 de seq(79) = V 3! de seq(9) = 41886
- V 4 de seq(41886) = V 4! de seq(9) = 79378
- V 5 de seq(79378) = V 5! de seq(9) = 1934
- V 6 de seq(1934) = V 6! de seq(9) = 10582
- V 7 de seq(10582) = V 7! de seq(9) = 84241
- V 8 de seq(84241) = V 8! de seq(9) = 93973
- V 9 de seq(93973) = V 9! de seq(9) = 91645.
En este punto, mcd(91645-2,112729) = 811, por lo que 811 es un factor no trivial de 112729. Nótese que p−1 = 810 = 2 × 5 × 3 4. El número 9! es el factorial más pequeño que es múltiplo de 810, por lo que el factor adecuado 811 se encuentra en este paso. El factor 139 no se encuentra esta vez porque p−1 = 138 = 2 × 3 × 23, que no es divisor de 9!.
Como se puede ver en estos ejemplos, no sabemos de antemano si el primo que se encontrará tiene un p+1 o p−1 suave.
Generalización
Basándose en los algoritmos de factorización p − 1 de Pollard y p +1 de Williams , Eric Bach y Jeffrey Shallit desarrollaron técnicas para factorizar n de manera eficiente siempre que tenga un factor primo p tal que cualquier polinomio ciclotómico k Φ k ( p ) sea suave . [ 3 ] Los primeros polinomios ciclotómicos están dados por la secuencia Φ 1 ( p ) = p −1, Φ 2 ( p ) = p +1, Φ 3 ( p ) = p 2 + p +1 y Φ 4 ( p ) = p 2 +1.
Referencias
- ↑ Montgomery, PL Aceleración de los métodos de factorización de Pollard y de curvas elípticas. Mathematics of Computation 48, 177 (1987), 243–264.
- ↑ Montgomery, Peter L.; Kruppa, Alexander (2008). "Algoritmos de factorización mejorados de la etapa 2 a P ± 1" (PDF) . Algorithmic Number Theory . 5011 : 180–195 . doi : 10.1007/978-3-540-79456-1_12 .
- ↑ Bach, Eric; Shallit, Jeffrey (1989). "Factoring with Cyclotomic Polynomials" (PDF) . Mathematics of Computation . 52 (185). American Mathematical Society : 201–219 . doi : 10.1090/S0025-5718-1989-0947467-1 . JSTOR 2008664 .
Enlaces externos
- Método de factorización P + 1 en Prime Wiki
- Algoritmos de factorización de enteros