El método de factorización de Fermat , que recibe su nombre de Pierre de Fermat , se basa en la representación de un número entero impar como la diferencia de dos cuadrados :
Esa diferencia es factorizable algebraicamente como; si ninguno de los factores es igual a uno, es una factorización propia de N .
Cada número impar tiene tal representación. De hecho, sies una factorización de N , entonces
Como N es impar, entonces c y d también son impares, por lo que esas mitades son números enteros. (Un múltiplo de cuatro también es una diferencia de cuadrados: sean c y d pares).
En su forma más simple, el método de Fermat podría ser incluso más lento que la división por tanteo (en el peor de los casos). Sin embargo, la combinación de la división por tanteo y el método de Fermat es más eficaz que cualquiera de ellos por separado.
Método básico
Uno prueba varios valores de a , esperando que, un cuadrado.
Factor de Fermat(N): // N debe ser impar a ← techo(sqrt(N)) b2 ← a*a - N repetir hasta que b2 sea un cuadrado: a ← a + 1 b2 ← a*a - N // equivalentemente: // b2 ← b2 + 2*a + 1 // a ← a + 1 devolver a - sqrt(b2) // o a + sqrt(b2)
Por ejemplo, para factorizar, el primer intento para a es la raíz cuadrada de 5959 redondeada al siguiente entero, que es 78. EntoncesComo 125 no es un cuadrado perfecto, se hace un segundo intento aumentando el valor de a en 1. El segundo intento también falla, porque 282 tampoco es un cuadrado perfecto.
El tercer intento produce el cuadrado perfecto de 441. Por lo tanto,,y los factores de 5959 sony.
Supongamos que N tiene más de dos factores primos. Ese procedimiento primero encuentra la factorización con los valores más pequeños de a y b . Es decir,es el factor más pequeño ≥ la raíz cuadrada de N , y por lo tantoes el factor más grande ≤ raíz cuadrada de N. Si el procedimiento encuentra, eso demuestra que N es primo.
ParaSea c el factor de subraíz más grande., por lo que el número de pasos es aproximadamente.
Si N es primo (de modo que), uno necesitapasos. Esta es una mala manera de probar la primalidad. Pero si N tiene un factor cercano a su raíz cuadrada, el método funciona rápidamente. Más precisamente, si c difiere menos quede, el método requiere solo un paso; esto es independiente del tamaño de N.
División de Fermat y de juicios
Consideremos el intento de factorizar el número primo N = 2,345,678,917 , pero también calcular b y a − b en todo momento. Subiendo desderedondeando al siguiente número entero, que es 48.433, podemos tabular:
En la práctica, uno no se molestaría con esa última fila hasta que b sea un número entero. Pero observe que si N tuviera un factor de subraíz más arribaEl método de Fermat ya lo habría encontrado.
La división por ensayo normalmente probaría hasta 48.432; pero después de solo cuatro pasos de Fermat, solo necesitamos dividir hasta 47.830, para encontrar un factor o probar la primalidad.
Todo esto sugiere un método de factorización combinado. Elija algún límite.; utilice el método de Fermat para factores entrey. Esto establece un límite para la división de juicios que es. En el ejemplo anterior, conLa división de destino para juicio es 47830. Una opción razonable podría serdando un límite de 28937.
En este sentido, el método de Fermat ofrece rendimientos decrecientes. Sin duda, uno se detendría antes de llegar a este punto:
Mejora del tamiz
Al considerar la tabla para, uno puede darse cuenta rápidamente de que ninguno de los valores deson cuadrados:
No es necesario calcular todas las raíces cuadradas de, ni siquiera examinar todos los valores de a . Los cuadrados son siempre congruentes con 0, 1, 4, 5, 9, 16 módulo 20, porque estos son los residuos cuadráticos de 20. Los valores se repiten con cada aumento de a en 10. En este ejemplo, N es 17 mod 20, por lo que restando 17 mod 20 (o sumando 3),produce 3, 4, 7, 8, 12 y 19 módulo 20 para estos valores. Es evidente que solo el 4 de esta lista puede ser un cuadrado. Por lo tanto,debe ser 1 mod 20, lo que significa que a es 1, 9, 11 o 19 mod 20; producirá unque termina en 4 mod 20 y, si es cuadrado, b terminará en 2 u 8 mod 10.
Esto se puede realizar con cualquier módulo. Usando el mismo,
Generalmente se elige una potencia de un número primo diferente para cada módulo.
Dada una secuencia de valores a (inicio, fin y paso) y un módulo, se puede proceder de la siguiente manera:
Tamiz de Fermat(N , astart, aend, astep, módulo) a ← astart hacer módulo veces : b2 ← a*a - N Si b2 es un cuadrado, módulo módulo: FermatSieve(N , a, aend, astep * módulo, NextModulus) endif a ← a + un paso final
Pero la recursión se detiene cuando quedan pocos valores de a ; es decir, cuando ( aend-astart )/ astep es pequeño. Además, como el tamaño del paso de a es constante, se pueden calcular b2 sucesivos mediante sumas.
Mejora del multiplicador
El método de Fermat funciona mejor cuando hay un factor cercano a la raíz cuadrada de N.
Si la razón aproximada de dos factores () es conocido, entonces un número racionalse puede elegir cerca de ese valor.y el método de Fermat, aplicado a Nuv , hallará los factoresyrápido. Entoncesy(A menos que c divida a u o d divida a v ).
Generalmente, si no se conoce la proporción, variosSe pueden probar valores y tratar de factorizar cada Nuv resultante . R. Lehman ideó una forma sistemática de hacerlo, de modo que la división de Fermat más la división de prueba puede factorizar N entiempo. [ 1 ]
Otras mejoras
Las ideas fundamentales del método de factorización de Fermat son la base de la criba cuadrática y la criba de cuerpos numéricos generales , los algoritmos más conocidos para factorizar semiprimos grandes , que son el "peor caso". La principal mejora que la criba cuadrática introduce sobre el método de factorización de Fermat es que, en lugar de simplemente encontrar un cuadrado en la secuencia deEncuentra un subconjunto de elementos de esta secuencia cuyo producto es un cuadrado, y lo hace de una manera muy eficiente. El resultado final es el mismo: una diferencia de cuadrados módulo n que, si no es trivial, puede usarse para factorizar n .
Véase también
Notas
- ↑ Lehman, R. Sherman (1974). "Factoring Large Integers" (PDF) . Mathematics of Computation . 28 (126): 637– 646. doi : 10.2307/2005940 . JSTOR 2005940 .
Referencias
- Fermat (1894), Obras de Fermat , vol. 2, pág. 256
- McKee, J (1999). "Acelerando el método de factorización de Fermat" . Matemáticas de la Computación . 68 (228): 1729– 1737. doi : 10.1090/S0025-5718-99-01133-3 .
Enlaces externos
- Tiempo de ejecución de la factorización de Fermat , en blogspot.in
- Calculadora en línea de factorización de Fermat , en windowspros.ru
- Algoritmos de factorización de enteros
- Pierre de Fermat