El método de factorización de Fermat es un algoritmo para factorizar (factorizar) un número entero impar , propuesto por Pierre Fermat ( 1601 - 1665 ) en 1643 .
El método se basa en buscar tales enteros y que satisfagan la relación , lo que lleva a una descomposición de .
A principios del siglo XVII en Francia, las ideas matemáticas comenzaron a difundirse activamente entre los científicos a través de la correspondencia. En 1638, Pierre Fermat se unió al círculo de eruditos correspondientes . La correspondencia era una forma conveniente de comunicarse, ya que Fermat vivía en Toulouse , y muchos de sus conocidos científicos vivían en París . Una de estas científicas fue Maren Mersenne , que se dedicaba a la distribución de cartas, reenvío y comunicación de muchos científicos entre ellos. El 26 de diciembre de 1638, en una carta a Mersenne , Fermat mencionó que había encontrado un método por el cual uno podía encontrar divisores de números positivos, pero omitió detalles y una descripción del método. En ese momento, Mersenne también mantuvo correspondencia con el matemático francés Bernard Frenicle de Bessy , quien, como Fermat, se dedicaba a la teoría de números , en particular, a los divisores de números naturales y números perfectos . A principios de 1640 , al enterarse de que Fermat había recibido un método para encontrar divisores, Frenicle escribió a Mersenne, quien le envió la carta de Fermat. Mersenne fue durante mucho tiempo el enlace entre los dos matemáticos en su correspondencia. Fue en las cartas a Frenicle que Fermat pudo probar la corrección del método de factorización, así como por primera vez formular y justificar las disposiciones principales del teorema, que más tarde se denominó pequeño teorema de Fermat [1] [2 ] .
El método de Fermat se basa en el teorema de la representación de un número como la diferencia de dos cuadrados :
Si es impar, entonces existe una correspondencia biunívoca entre la factorización y la representación como diferencia de cuadrados con , dada por las fórmulas |
Si se da la factorización , entonces la relación se cumple: . Así, se obtiene una representación en forma de diferencia de dos cuadrados.
Por el contrario, si se da eso , entonces el lado derecho se puede factorizar: [3] .
Para factorizar un número impar, se busca un par de números tales que , o . En este caso, los números y son divisores , posiblemente triviales (es decir, uno de ellos es igual a 1 y el otro es igual a ).
En el caso no trivial, la igualdad equivale a , es decir, a lo que es un cuadrado .
La búsqueda de un cuadrado de este tipo comienza con - el número más pequeño para el cual la diferencia no es negativa.
Para cada valor a partir de , calcule y verifique si este número no es un cuadrado exacto. Si no, aumente en uno y pase a la siguiente iteración.
Si es un cuadrado exacto, es decir, entonces se obtiene la expansión:
donde
Si es trivial y único, entonces es simple.
En la práctica, el valor de la expresión en el paso -ésimo se calcula teniendo en cuenta el valor en el paso -ésimo:
dónde
Tomemos un número . Calcular Para calcularemos los valores de la función . Para mayor simplicidad, construiremos una tabla que contendrá los valores y en cada paso de iteración. Obtenemos:
una | 363 | 19.052 |
2 | 576 | 24 |
Como se puede ver en la tabla, ya en el segundo paso de iteración se obtuvo un valor entero .
Así, se produce la siguiente expresión: . De ahí se sigue que
Sea entonces o
77 | 52374 | 228.854 |
78 | 53129 | 230.497 |
79 | 53886 | 232.134 |
80 | 54645 | 233.763 |
81 | 55406 | 235.385 |
82 | 56169 | 237 |
Esta expansión no es finita, ya que, obviamente, el número no es primo:
Como resultado, la descomposición final del número original en el producto de factores primos
La mayor eficiencia de cálculo por el método de factorización de Fermat se logra cuando los factores del número son aproximadamente iguales entre sí. Esto proporciona una búsqueda de secuencia relativamente corta [4]
En el peor de los casos, cuando, por ejemplo, cerca de a está cerca de 1, el algoritmo de Fermat funciona peor que el método de búsqueda del divisor . Número de iteraciones para un caso dado
es decir, es obvio que tiene el orden
El método de factorización de Fermat funcionará tan bien como el método de enumeración de divisores si es posible obtener una estimación para un divisor más grande a partir de aquí . Por lo tanto, el método de Fermat tiene una estimación exponencial y, como método de división de prueba, no es adecuado para descomponer números grandes . Puede mejorar la eficiencia si primero intenta dividir un número por números de 2 a alguna constante B y luego busca divisores usando el método de Fermat. Tal campaña ayuda a deshacerse de los pequeños divisores del número [5] .
Supongamos que estamos tratando de factorizar el número n = 2345678917 usando el método de Fermat, pero además de b también calculamos a − b . A partir de , se puede escribir:
a | 48 433 | 48 434 | 48 435 | 48 436 |
---|---|---|---|---|
segundo 2 | 76 572 | 173 439 | 270 308 | 367 179 |
b | 276.7 | 416.5 | 519.9 | 605.9 |
un - b | 48.156,3 | 48.017,5 | 47,915.1 | 47.830,1 |
Si ahora empezáramos a usar el método de enumeración de divisores para descomponer un número , entonces tendría sentido verificar divisores solo hasta 47,830, y no hasta 48,432, ya que si hubiera un divisor mayor, entonces se encontraría por el método de Fermat. . Entonces, en solo cuatro pasos, el método de Fermat verificó todos los divisores desde 47,830 hasta 48,432.
Por lo tanto, es posible combinar el método de Fermat con el método de enumeración de divisores. Es suficiente elegir un número y usar el método de Fermat para verificar los divisores entre y , y los divisores restantes se pueden verificar enumerando los divisores, y los divisores deben verificarse solo hasta el número [6] .
En el ejemplo anterior, cuando , los divisores deben iterarse hasta el número 47830. También, por ejemplo, puede elegir el número que da el borde 28937.
La combinación de métodos es buena, porque con una diferencia suficiente entre los divisores de un número, el método de enumeración de divisores es más eficiente que el método de Fermat [5] . Esto se ilustra con el siguiente ejemplo:
a | 60 001 | 60 002 |
---|---|---|
segundo 2 | 1 254 441 084 | 1 254 561 087 |
b | 35.418,1 | 35.419,8 |
un - b | 24.582,9 | 24.582,2 |
Al buscar el cuadrado de un número natural en una secuencia de números, no es necesario que calcules la raíz cuadrada de cada valor en esa secuencia, ni siquiera verifiques todos los valores posibles para un . Por ejemplo, considere un número :
a | 48 433 | 48 434 | 48 435 | 48 436 |
---|---|---|---|---|
segundo 2 | 76 572 | 173 439 | 270 308 | 367 179 |
b | 276.7 | 416.5 | 519.9 | 605.9 |
Inmediatamente, sin calcular la raíz cuadrada, puede decir que ninguno de los valores en la tabla es un cuadrado. Basta, por ejemplo, utilizar el hecho de que todos los cuadrados de los números naturales tomados módulo 20 son iguales a uno de los siguientes valores: 0, 1, 4, 5, 9, 16. Estos valores se repiten para cada aumento en a por 10. En el ejemplo de módulo 20, por lo tanto, restando 17 (o sumando 3), obtenemos que el número módulo 20 es igual a uno de los siguientes: 3, 4, 7, 8, 12, 19. Pero como es un número natural, de aquí obtenemos que el módulo 20 solo puede ser igual a 4. Por lo tanto, el módulo 20 y /o el módulo 10. Por lo tanto, puede verificar la raíz de la expresión no para todos , sino solo para aquellos que terminan en 1 o 9 [6] .
De manera similar, cualquier potencia de varios números primos se puede usar como módulo. Por ejemplo, tomando el mismo número , encontramos
Módulo 16: | los cuadrados son iguales | 0, 1, 4 o 9 |
n mod 16 es igual | 5 | |
por lo tanto es igual | 9 | |
y un es | 3, 5, 11 o 13 módulo 16 | |
Módulo 9: | los cuadrados son iguales | 0, 1, 4 o 7 |
n mod 9 es igual | 7 | |
por lo tanto es igual | 7 | |
y un es | 4 o 5 módulo 9 |
El método de Fermat funciona bien cuando el número tiene un factor que es aproximadamente igual a la raíz cuadrada de [5] .
Si conoces la razón aproximada entre los factores del número , entonces puedes elegir un número racional que sea aproximadamente igual a esta razón. Entonces podemos escribir la siguiente igualdad: , donde los factores y están cerca debido a las suposiciones hechas. Por lo tanto, al aplicar el método de Fermat para expandir el número , se pueden encontrar rápidamente. Además, para encontrar y, puede usar las igualdades y (en caso de que no sea divisible por y no sea divisible por ).
En general, cuando no se conoce la relación entre los factores , se puede intentar usar diferentes relaciones e intentar expandir el número resultante . Un algoritmo basado en este método fue propuesto por primera vez por el matemático estadounidense Sherman Lehman en 1974 [7] y se llama método Lehman . El algoritmo factoriza de manera determinista un número natural dado en operaciones aritméticas [8] , pero actualmente solo tiene interés histórico y casi nunca se usa en la práctica [9] .
Maurice Krajczyk propuso una generalización del método de Fermat en 1926. Propuso considerar en lugar de pares de números que satisfagan la relación , buscar pares de números que satisfagan una comparación más general. Tal comparación se puede encontrar multiplicando varias comparaciones de la forma , donde son números pequeños, cuyos productos serán ser un cuadrado. Para ello, podemos considerar pares de números , donde es un número entero ligeramente mayor que , y . Krajczyk notó que muchos de los números obtenidos de esta manera se descomponen en pequeños factores primos, es decir, los números son suaves [10] .
La secuencia de acciones según Krajcik [11]Usando el método Krajczyk-Farm, descomponemos el número El número es el primero cuyo cuadrado es mayor que el número :
Calcular el valor de la función para todo Obtenemos
Según el método de Fermat, sería necesario continuar con los cálculos hasta encontrar el cuadrado de cualquier número. Según el método de Krajczyk-Fermat, entonces es necesario buscar sucesivamente aquellos para los que Entonces
Del algoritmo de Krajczyk-Fermat se deduce que todos los números resultantes se pueden factorizar fácilmente.
En realidad:
Obviamente, el producto de los cuatro números obtenidos será un cuadrado: Entonces ya podemos calcular
A continuación, utilizando el algoritmo de Euclides, encontramos .
De este modo,
En 1981, el matemático John Dixon de la Universidad de Carleton publicó su propio método de factorización basado en las ideas de Krajczyk [13] [14] [15] [16] .
El algoritmo de Dixon se basa en el concepto de bases factoriales y es una generalización del algoritmo de factorización de Fermat. En el algoritmo, en lugar de pares de números que satisfagan la ecuación, se buscan pares de números que satisfagan una ecuación más general , para cuya solución Krajczyk notó varios hechos útiles. Complejidad computacional del algoritmo [17]
dónde
La idea del método de factorización de Fermat subyace a algunos de los algoritmos más rápidos para factorizar semiprimos grandes : el método de tamiz cuadrático y el método de tamiz de campo numérico general . La principal diferencia entre el método de tamiz cuadrático y el método de Fermat es que en lugar de buscar un cuadrado, la secuencia contiene pares de tales números cuyos cuadrados son iguales en valor absoluto (cada uno de estos pares puede ser una descomposición de un número ). Luego, entre los pares de números encontrados, se busca el par que es la expansión del número . [Dieciocho]
Una evolución del método de factorización de Fermat es el método de formas cuadráticas de Shanks (también conocido como SQUFOF), basado en la aplicación de formas cuadráticas . Curiosamente, para las computadoras de 32 bits, los algoritmos basados en este método son los líderes indiscutibles entre los algoritmos de factorización para números de a [19] .
El algoritmo de factorización de Fermat se puede aplicar al criptoanálisis RSA . Si los números aleatorios cuyo producto es igual a son cercanos entre sí, entonces se pueden encontrar mediante el método de factorización de Fermat. Luego puede encontrar el exponente secreto , descifrando así RSA [20] [21] . En el momento de la publicación del algoritmo RSA, solo se conocía un pequeño número de algoritmos de factorización, el más famoso de los cuales era el método de Fermat.
El conocido economista y logista inglés W. S. Jevons hizo la siguiente suposición en su libro The Principles of Science ( 1874 ) [22] :
Dados dos números, puedes encontrar su producto de una manera simple y confiable, pero es otra cosa cuando necesitas encontrar sus factores para un número grande. ¿Puedes decir qué dos números se multiplican para hacer 8616460799 ? No creo que nadie más que yo lo sepa.
Curiosamente, el número indicado por Jevons se puede descomponer manualmente por el método de Fermat utilizando el método de criba en unos 10 minutos. De hecho, . Usando el método del tamiz, uno puede llegar rápidamente a la relación
Así, la descomposición en factores primos tiene la forma .
La idea principal de Jevons sobre la complejidad de descomponer números en factores primos en comparación con su multiplicación es válida, pero solo cuando se trata del producto de números que no son tan cercanos entre sí [23] .
Algoritmos de teoría de números | |
---|---|
Pruebas de simplicidad | |
Encontrar números primos | |
Factorización | |
logaritmo discreto | |
Encontrar MCD | |
Módulo aritmético | |
Multiplicación y división de números. | |
Calcular la raíz cuadrada |