¿Por qué factorizar números en números primos es un problema difícil?

Lamentablemente, no estoy de acuerdo con las respuestas publicadas que apuntan a la distribución caótica de los números primos como la razón. Esto no tiene nada que ver con el problema de la factorización.

Primero: factorizar números, grandes y pequeños, en números primos no es un problema difícil. Es un problema trivial. Dado un número, puede buscar sucesivamente sus divisores hasta que esté completamente factorizado. Se garantiza que funcionará y tomará una cantidad de tiempo finita, que naturalmente crece con el tamaño del número que está tratando de factorizar.

Cuando las personas dicen que “la factorización es difícil”, significan que no existe un algoritmo eficiente para la factorización, y “eficiente” significa “uno que requiere sorprendentemente menos tiempo del que cabría esperar para un problema de este tamaño”.

No estoy usando “sorprendentemente” a la ligera aquí. Los algoritmos polinómicos para problemas de tamaño exponencial son milagrosos, y es fácil ver que deben ser muy raros: hay cálculos abrumadoramente más lentos que rápidos, por lo que no se espera que un problema “típico” tenga una solución tremendamente eficiente.

Por lo tanto, no tiene sentido preguntar “¿por qué es difícil este problema?”. La gran mayoría de los problemas son. Es como preguntar “¿por qué mi vecina ama a sus hijos?”. Todos los problemas son difíciles a menos que se demuestre lo contrario, no al revés. Es útil preguntar “¿por qué es este problema tan increíblemente fácil?” sobre problemas como la optimización lineal, 2-SAT o pruebas de primalidad.

En resumen, la factorización de enteros es “difícil” en el sentido de eficiencia computacional porque nunca hemos encontrado una razón milagrosa para que sea fácil , y no es probable que exista tal milagro.

(Por cierto, no sabemos que sea difícil en el sentido de la complejidad computacional. De hecho, puede resultar fácil, lo cual es otra razón por la que hoy es imposible explicar por qué es difícil).

Ahora, ¿cómo juega la naturaleza caótica de los números primos en eso? Francamente no veo ninguna conexión en absoluto. Ciertamente, existen problemas elementales profundos, fascinantes y difíciles acerca de los números primos, algunos de los cuales están bien presentados en la respuesta de Christopher Reiss. Pero no veo ninguna razón por la cual nuestro estado de conocimiento en ninguno de ellos tenga alguna relación con el problema de la factorización.

Si hubiéramos resuelto la conjetura de Goldbach, la conjetura de los Primes Gemelos, la existencia de números primos entre cuadrados sucesivos y otros quince problemas sobre los números primos, no hay absolutamente ninguna razón para esperar que la factorización sea aún un poco más fácil.

Recientemente se descubrió que la prueba de primalidad es un problema fácil: hay un algoritmo de tiempo polinomial para determinar si un número es primo o no (“polinomio” en el número de dígitos de la entrada, que es “polilogarítmico” en términos de números). valor de la entrada. Esto es realmente sorprendentemente rápido). El algoritmo es técnicamente elaborado, pero eso es irrelevante: es tan eficiente como uno podría esperar, y todavía no facilita la factorización.

En otras palabras, incluso si los números primos fueran una secuencia ridículamente simple que se define mediante una regla ridículamente simple, esto no sería esencialmente diferente del estado real de las cosas. En este sentido, señalar la aparente complejidad de la distribución de números primos como el culpable aquí me parece bastante fuera de lugar.

Advertencia de respuesta larga: (Esto está copiado de un ensayo que escribí)

Factorizando números primos.

Los números primos son un enigma fascinante que desconcertó a algunas de las mejores mentes desde los albores del pensamiento humano. Gauss solía pasar el tiempo (un cuarto de hora inactivo en sus propias palabras) contando lo que él llamó chiliads de números primos, bloques de mil en su cabeza buscando números primos. Informó que llegó a cientos de miles sin llegar a un millón. Para el resto de los mortales, determinar la distribución de los números primos es un problema significativamente más difícil. Afortunadamente, no estamos limitados a nuestros cerebros con su memoria de trabajo bastante limitada, utilizamos computadoras para procesar estas operaciones hoy en día. Alfred North Whitehead dijo una vez que “la civilización avanza al extender el número de operaciones importantes que podemos realizar sin pensar en ellas”. Según ese criterio, la civilización se duplica aproximadamente cada dieciocho meses. Esto se conoce como la ley de Moore. Esto es una gran ayuda para el campo de las matemáticas, con mejores procesadores y unidades centrales de procesamiento, podemos hacer cálculos cada vez más complejos en menos tiempo. Un ejemplo de esto es la prueba del teorema de los cuatro colores que dependía de las computadoras para forzar esencialmente la fuerza bruta de un cierto conjunto de mapas que luego se utilizó, ya que cualquier contraejemplo contendría uno de estos mapas y, por lo tanto, sería una contradicción. En su mayor parte, las personas no intentan factorizar manualmente los números en números primos, principalmente porque los números que nos interesan generalmente tienen 1024 o 2048 bits, lo que hace que sea imposible hacerlo sin computadoras. Sin embargo, eso no quiere decir que las computadoras sean un deus ex machina mágico. Todavía tenemos que escribir programas e implementar software. Como veremos, esta es la parte difícil, pero primero debemos desviarnos brevemente de las propiedades de los números primos.

Los números primos son números con solo 1 y en sí mismos para un factor, 1 no es un número primo. Suena engañosamente simple. Sin embargo, el matemático ha estado estudiando números primos durante los últimos dos mil años. Los números primos siguen siendo un tema de interés en áreas de las matemáticas como la teoría de números … etc. Dos de los primeros teoremas sobre números primos provienen de Euclides en sus elementos. La primera es que cualquier número puede factorizarse en números primos. Esto se llama el teorema fundamental de la aritmética. Sin embargo, esto es solo un teorema de existencia. Nos dice que para cualquier número compuesto, existen factores de números primos, pero no nos da una fórmula para calcular dichos factores primos. Sin embargo, esto permite al lector tener una idea de lo que tiene de especial los números primos. Los números primos son el equivalente matemático de las partículas subatómicas a la física de partículas, o los genes a la biología evolutiva. Son como unidades básicas de enteros. Esto es lo que los hace de enorme interés para los matemáticos. Euclides también demostró que hay N casos de números primos, lo que significa que hay una cantidad infinita de ellos. La prueba es la siguiente, tome una lista finita de números primos, P es el producto de todos los números primos, mientras que Q = P + 1. O Q es primo o no es primo. Si es así, cualquier lista finita de primos siempre tendría más primos. La segunda opción significaría que el número sería un número compuesto, lo que implica que tiene un factor primo p, que luego se dividiría en P ya que es el producto de los primos listados. Como p se divide en P y Q, se dividiría en la diferencia entre P y Q, que es solo uno. Pero no hay un número primo que se divida en 1, por lo tanto, p no puede estar en la lista y hay un número primo no listado más. QED, hay primos infinitos. Sin embargo, este teorema no ha impedido que los aficionados e investigadores busquen números primos cada vez más grandes. Actualmente, el número primo más grande conocido es 2 ^ 57.885.161 – 1. Observe de nuevo que este es un teorema de existencia, lo que significa que nos dice que mientras hay primos infinitos, no nos dice dónde en los números primos son, con qué frecuencia hay números primos, etc. Estas son las preguntas realmente interesantes. La distribución precisa de los números primos sigue siendo una de las preguntas abiertas de las matemáticas. Hay una serie de conjeturas famosas relacionadas con la búsqueda de patrones en números primos. Los primos gemelos son números primos que están separados por dos números. La conjetura del primo gemelo pregunta si hay infinitos primos gemelos. Esto no está resuelto. (Aunque los resultados recientes de Yitang Zhang mostraron que incluso cuando los números primos gemelos se vuelven cada vez más raros a medida que aumenta el número, existe una brecha límite de 70 millones como máximo, otros matemáticos han reducido el número aún más. Enlace: [1311.4600] Pequeño brechas entre números primos) La conjetura de Goldbach es igualmente famosa. Establece que cada número par mayor que dos debe ser la suma de dos números primos. Esta es otra conjetura no probada. Quizás la más famosa es la hipótesis de Riemann, postulada por primera vez por Bertrand Riemann. Es uno de los siete problemas del Milenio por el que el instituto Clay ofrece un millón de dólares, sin mencionar la fama inmortal que se obtendría por resolverlo. Algunos otros resultados notables en relación con los números primos son el teorema de los números primos, el teorema de Green-Tao, etc. El teorema de los números primos establece que el número primo se vuelve cada vez más raro a medida que el número aumenta pero no desaparece, es una declaración de aproximadamente cuantos primos hay donde, siendo n log n. El tamiz de Eratóstenes es el primer algoritmo que tenemos para calcular números primos, aunque superado por mucho tiempo. El pequeño teorema de Fermat fue otro gran avance en esta área.

Todo esto es algo bastante abstruso. Pero los números primos son muy importantes, no solo porque los matemáticos están fascinados con los patrones y todo lo relacionado con los números primos. Lo cual en sí mismo debería proporcionar suficientes razones para estudiar números primos. La razón clave por la que los números primos conciernen a muchas personas fuera de la torre de marfil de la academia es que se usan en esquemas de cifrado modernos. Cada vez que alguien se conecta y realiza una transacción financiera, los números primos los protegen de que sus crackers y otras personas malintencionadas lean sus datos. Este es el motivo práctico detrás de esta cuestión de factorizar números primos. Si bien la mayoría de los matemáticos cree que los esquemas de cifrado modernos, como RSA, son seguros en el sentido de que las computadoras más poderosas del mundo tomarían un tiempo más largo que la edad actual del universo para forzar estos hash a fuerza bruta, esto no se ha demostrado. Por supuesto, si el atacante está dispuesto a ejercer ese tipo de recursos, hay vectores mucho más fáciles de explotar. Dado que este no es el momento ni el lugar para entrar en eso, asumimos que las políticas de seguridad adecuadas se han codificado y configurado de manera confiable. En teoría, nadie debería ser capaz de romper el cifrado ofrecido al tener números primos enormes que ninguna computadora puede tener en cuenta en un tiempo razonable. Entonces, ¿cómo funciona esto? Este es el tema del resto del ensayo.

La respuesta simple es que factorizar es una función unidireccional. Esto solo significa que es mucho más fácil tomar dos números primos grandes y multiplicarlos en lugar de ir hacia atrás, es decir, si a alguien se le dan los resultados y luego se le pide que encuentre los números primos utilizados para multiplicarlo. Este número se llama semiprime. Nadie ha encontrado una manera eficiente de hacer esto. Los algoritmos existentes no son suficientes para resolver el problema en tiempo polinómico. Esto es válido si los números primos tienen una longitud determinada, 2000 bits y se eligen aleatoriamente. La advertencia es que dos números no deben estar demasiado cerca, para evitar ser factorizados usando el método de factorización de Fermat. Si estas condiciones no se cumplen, hay casos especiales en los que existen métodos más eficientes para factorizar números primos. Además, esto es cierto para factorizar enteros en general, sin embargo, se usan números primos porque ofrecen una solución única. Tanto los números enteros como los números primos son problemas difíciles en este sentido. Hasta el día de hoy, uno de los factores más importantes fue parte del desafío RSA. El desafío RSA fue creado por los laboratorios RSA para inspirar a las personas a realizar una investigación activa en esta área. RSA-768 se resolvió en 2009 mediante un proyecto de investigación colaborativo que se ejecuta en cientos de máquinas. Sin embargo, esto tenía solo 768 bits y 232 dígitos, mucho más débil que los primos actualmente en uso en esquemas de cifrado. Cuanto mayor es el número primo utilizado, más difícil es factorizar, y esta dificultad aumenta exponencialmente. Sin embargo, existen algunos algoritmos interesantes que representan los métodos actuales más modernos. El tamiz de campo de número general es actualmente la forma más eficiente que tenemos de factorizar números de más de 100 dígitos. Hay algunos tamices de campo con números especiales que se utilizan para fines especiales. De cierto interés son las pruebas de primalidad diseñadas para probar si un número es primo o no. Estos tienden a ser problemas más fáciles en términos de potencia informática, que se ejecutan fácilmente en tiempo polinómico. Algunos pueden probar si un número es primo o no, mientras que otros pueden decir si un número es un número compuesto o no. En resumen, hay algunos métodos matemáticos interesantes que son el foco de la investigación y el trabajo activos.

Y ahora si podemos explorar una escena muy hipotética. Si tuviéramos una computadora cuántica, que son básicamente computadoras que explotan ciertas características de la mecánica cuántica para aumentar radicalmente la cantidad de potencia computacional que tenemos. A un nivel muy elemental, la computadora moderna funciona con bits, 0 y 1 ‘. Por supuesto, en un nivel, todas las computadoras son computadoras “cuánticas”, las computadoras actuales no están exentas de la ley de la física. Sin embargo, esto no es lo que se entiende por computadoras cuánticas. Estas computadoras se basan en la superposición de estados cuánticos y propiedades como el enredo cuántico. Dependen de qubits en lugar de bits, lo que significa que pueden tomar valores entre uno y cero a diferencia de las computadoras contemporáneas. A partir de 2013, no existe tal computadora más allá de modelos muy primitivos que ni siquiera coinciden con las computadoras que tenemos ahora. Por supuesto, gran parte de esta investigación probablemente se clasifica debido al potencial de realizar criptoanálisis, por lo que la advertencia es hasta donde sabemos. En pocas palabras, cuando está completamente desarrollado, una de estas computadoras puede hacer proezas computacionales que las computadoras clásicas ni siquiera pueden hacer. Para una computadora cuántica, factorizar primos sería ridículamente fácil. Una computadora cuántica puede estar en 2 * n cantidad de estados simultáneamente, mientras que una computadora clásica puede estar en uno de estos estados a la vez. De hecho, ya existe un algoritmo capaz de factorizar un número primo en tiempo polinómico, el algoritmo de Shor para una página cuántica en la computadora. También es posible resolver problemas de registro discreto, el otro método utilizado para el cifrado. De hecho, ya se ha hecho una versión prototipo de esto. En 2001, en IBM, un grupo usó una computadora cuántica con solo 7 qubits para factorizar 15 en 3 y 5. Uno puede imaginar fácilmente lo que una máquina similar puede hacer con muchos más qubits. El récord actual para esto es una factorización de 21. En resumen, una computadora cuántica madura sería el golpe de gracia para nuestros esquemas de cifrado actuales y casi cualquier otra cosa que encontremos que necesitamos fuerza bruta para resolver. Sin embargo, construir una computadora cuántica está lleno de dificultades, principalmente debido a la necesidad de evitar que ocurra la decoherencia. Los estimados de tiempo actuales para esta tecnología son de al menos 30-50 años más y tendrán mucha más aplicación que simplemente factorizar primos.

Para resumir este ensayo, los factores primos de factorización son difíciles porque carecemos de un algoritmo eficiente para factorizar semi-primos grandes dada la potencia computacional limitante que poseemos. Esto podría cambiar en el futuro si algún intrépido matemático o informático puede encontrarnos un algoritmo mejor o si hay un cambio de paradigma en la cantidad de poder computacional que tenemos, muy probablemente a través del desarrollo de computadoras cuánticas, en cuyo caso podemos implementar Shor’s algoritmo.

Por último, para obtener una visión más profunda sobre esta cuestión, uno puede mirar el problema P vs NP en informática y matemáticas. Parte de los factores primos de factorización es encontrar formas y algoritmos eficientes para que las computadoras trabajen. La informática ha encontrado formas de clasificar ciertas formas de resolver problemas, cuán complicados son, cuánto tiempo lleva resolverlos … etc. El problema P vs NP fue presentado por primera vez en un documento por Stephen Cook y ahora es uno de los más importantes. Pregunta importante en informática. Esto se puede ver por su inclusión en los problemas de los siete milenios con el premio correspondiente de un millón de dólares. Dicho en términos simples, pregunta: si una computadora puede verificar rápidamente que la solución a un problema es correcta, ¿puede resolverlo rápidamente? Hay una aplicación obvia para el problema en cuestión, si se le da un semiprime y los dos números primos, una computadora puede verificar rápidamente si el semiprime es el producto de los dos números primos. Pero, ¿puede resolver el problema de factorización tan rápido o a una velocidad comparable? La respuesta parece ser no, pero no tenemos una prueba matemática de lo que la mayoría de la gente sospecha. P aquí significa tiempo polinomial, significa la clase de preguntas que tienen soluciones que se pueden encontrar en tiempo polinomial. NP aquí representa la clase de problemas que no son posibles de resolver en el tiempo polinómico, pero si se les da la respuesta, podrían verificarse en el tiempo polinómico. El campo que estudia esto se llama teoría de la complejidad computacional. Los cuellos de botella son la cantidad de tiempo que la computadora tiene para resolver problemas y la cantidad de memoria que tiene. Actualmente, la mayoría de los investigadores creen que P no es igual a NP, sin embargo, esto es matemática. Las opiniones no importan, solo las pruebas sí. Sin embargo, si P es igual a NP, entonces lo que esto significa para los problemas completos de NP es que son solucionables en tiempo polinómico. La factorización de enteros (aquí números primos) no es NP completa y es NP y co-NP. Estas cosas se llaman clases de complejidad y son parte de la teoría de la complejidad computacional. Básicamente son formas de decir cuán difícil es un problema. Tenga en cuenta que esto no se centra en ningún algoritmo en particular, sino en todos los algoritmos posibles. Desde este punto de vista, la “dureza” de factorizar en números primos es solo una aplicación específica de un problema mucho más general. En la actualidad, la respuesta más precisa que podemos dar depende de dos factores, la cantidad de potencia informática y el mejor algoritmo disponible, los cuales están sujetos a cambios. Si algún genio resuelve el problema P vs NP, entonces tendríamos una respuesta concreta a la pregunta junto con muchos otros problemas computacionales. Personalmente, el autor espera lo mejor de todos los mundos posibles donde tendríamos computadoras cuánticas y también la prueba correcta o la prueba del problema P vs NP. “La esperanza brota eternamente en el seno humano” – Papa.

Los números primos están en el corazón de los problemas (y soluciones) más difíciles en la teoría de números. Por ejemplo, el último teorema de Fermat. Por otro lado, el matemático Shinichi Mochizuki ha afirmado haber realizado los descubrimientos más profundos hasta la fecha; En cuatro documentos, la comunidad matemática tardará años en verificar su trabajo.

Prueba reclamada para conexión profunda entre números primos

¿Por qué los números primos son tan difíciles ? Echa un vistazo a este gráfico:


Esto es de números primos, dispuestos en espiral en el centro. Una cosa que puede notar es que parece haber bastantes líneas diagonales, casi algún tipo de orden. Pero otra cosa que notas es que se parece mucho al ruido , seguro que hay algunas líneas, pero en su mayoría esto parece estático en un televisor de estilo antiguo.

Los números primos nos siguen haciendo eso. Los patrones se sugieren pero luego los números primos siempre rompen el patrón.

No hay una regla simple que corte el ruido para decirnos “¿Dónde demonios están los números primos?”

¿Es cada número par (> 2) la suma de dos primos? Nadie lo sabe. (EDITAR – corrección gracias a Douglas Zare): ¿Siempre hay un primo entre n ^ 2 y (n + 1) ^ 2? Nadie lo sabe. Muchas preguntas como esta quedan sin respuesta.

Para abordar directamente su pregunta, ¿por qué es tan difícil factorizar un número (grande) en sus números primos? Es porque esencialmente no sabemos dónde están los números primos . Tenemos que trabajar hacia atrás por prueba y error. “¿Se divide por 5? ¿Por 7? Por 9 – whoops, eso es compuesto – por 11?”

Se han producido algunas mejoras importantes en la eficiencia de la búsqueda (consulte la prueba de primalidad de AKS) para que no tengamos que avanzar tan lentamente.

Pero aún así, estamos avanzando, aún buscando, porque no sabemos dónde están los números primos.

Además de las dos buenas respuestas, haré un corte al explicar esto en términos simples.

Primero, piense en cuándo comenzó a aprender matemáticas, digamos seis años más o menos. Estabas bastante emocionado de contar hasta cien, pero tomó algo de trabajo. Entonces la gente comenzaría a hacerte preguntas más complicadas:

“Aquí hay cinco gatitos. Si cada gatito tiene cuatro patas, ¿cuántas patas tienen los cinco gatitos juntos?”

Al principio, respondiste esta pregunta usando lo que llamamos el método de “fuerza bruta”: contabas cada pata. Pero con el tiempo, aprendiste a multiplicar, y aprendiste que en mucho menos tiempo podrías calcular 5 X 4 usando unas pocas reglas simples. De hecho, dadas algunas reglas más complejas (lo que llamamos “multiplicación larga”) podría multiplicar rápidamente cualquiera de los dos números.

La parte de “mucho menos tiempo” es crucial, porque si bien las computadoras son muy rápidas, aún requieren una cantidad limitada de tiempo para realizar los cálculos. En el caso de la multiplicación, tenemos algunas reglas (técnicamente un algoritmo ) que permiten a la computadora multiplicar de forma rápida y eficiente dos números, en solo unas pocas millonésimas de segundo.

Pero división, esa es otra caldera de pescado de hecho. Si recuerda volver al quinto o sexto grado, probablemente aprendió a hacer una división larga. Y si recuerdas, ese es un proceso mucho más complejo. Y de nuevo, así es para las computadoras. Hacer divisiones, incluso en una computadora, es cientos o incluso miles de veces más lento que multiplicar.

Finalmente, llegamos a primos. Entre los muchos hechos interesantes sobre los números primos se encuentra este:

No existe un algoritmo que determine rápidamente los factores de un número no primo.

Entonces, para usar un ejemplo simple: si tuviera que decirle que tenía 43 cajas de conos de helado, y cada caja tenía 67 conos adentro, rápidamente podría decirme cuántos conos había en total: 43 X 67 = 2881 .

Pero supongamos que te dije esto: tengo un montón de conos de helado. 2501 para ser exactos. Me gustaría ponerlos en cajas, y me gustaría poner la misma cantidad de conos en cada caja. ¿Cuántas cajas necesitaré y cuántos conos habrá en cada caja?

Darle una oportunidad. Es más difícil de lo que piensas.

Solo hay una forma posible de determinar los factores de un número no primo, y es intentar dividirlo entre todos los factores posibles. Puedes hacer esto un poco más eficiente solo probando factores primos, y solo necesitas subir a la raíz cuadrada del número, pero el hecho es que tendremos que dividir mucho .

¿Cuánta división?

Bien. supongamos que tenemos un número N de 100 dígitos, digamos 1234512345 … 12345. La raíz cuadrada (la llamaremos S) de esto es un número de 50 dígitos, algo así como 11109000000000000000000000000000000000000000000000. Así que ahora todo lo que tenemos que hacer es encontrar todos los primos menos que S y luego tratar de dividir N entre cada primo.

Tengo algunas malas noticias.

Primero, almacenar esos números primos será un poco difícil. Hay muchos primos menores que S, de hecho, hay aproximadamente 1110000000000000000000000000000000000000000000000 de ellos. Para poner eso en perspectiva, es aproximadamente el número de átomos en todo el mundo. Entonces, incluso si tuviéramos una computadora cuántica perfecta con un átomo por bit, aún no podríamos almacenar el conjunto de primos que necesitamos probar.

Hay más malas noticias.

¿Recuerdas que dije que lleva tiempo dividir, incluso en una computadora? Incluso si pudiera hacer una división larga en una millonésima de segundo (lo que probablemente no pueda) hacer 1110000000000000000000000000000000000000000000000 divisiones tomará aproximadamente 1110000000000000000000000000000000000000000 segundos. O en términos más útiles, aproximadamente 2111000000000000000000000000000000 años. Lamentablemente, el sol se quemará en unos 400000000 años, por lo que podría no terminar.

Por qué todo esto importa

Hay muchos casos en los que dos partes desean intercambiar información, pero desean que la información se mantenga en secreto de cualquier otra persona. Esto se hace usando varias formas de encriptación. Por ejemplo, probablemente has jugado con una simple codificación Cesar, en la que A = 1, B = 2, C = 3, etc.

El problema con cualquier codificación como esta es que si sabe codificar un mensaje, también sabe cómo decodificarlo . Eso significa que si quisiera codificar algo (por ejemplo, mi contraseña), cualquier otra persona que pueda codificar su contraseña podrá decodificar mi contraseña. Esto es claramente menos que óptimo.

Todo esto fue un retroceso matemático hasta hace unos 40 años, cuando sucedió algo muy grande: las computadoras se volvieron muy pequeñas y muy baratas. La multiplicación repentina de grandes números podría hacerse de manera rápida y eficiente.

A mediados de la década de 1970, varios grupos diferentes reunieron el cifrado y el problema de factorizar primos, y en esencia lo que hicieron fue esto: crearon un método de cifrado en el que había dos primos (F1 y F2), que se multiplicaron juntos para obtenga un número especial P. El número P se usó luego como una clave de cifrado. Como todo lo que necesitamos para hacer el cifrado es multiplicar, es rápido. Y si conoce F1 y F2, es muy simple y rápido decodificar el mensaje.

Pero si todo lo que sabe es P, entonces la única forma posible de encontrar F1 y F2 es encontrar los factores de P, y eso no es posible por las razones mencionadas anteriormente.

Hay una implicación interesante para este problema por el algoritmo de Shor que puede factorizar grandes números en tiempo polinómico usando una computadora cuántica. Esto es considerablemente más rápido que las computadoras tradicionales que toman tiempo sub-exponencial. Hasta ahora, las computadoras cuánticas son una tecnología muy joven y solo se han construido máquinas pequeñas, pero hemos visto una prueba de concepto que factoriza 21. Otra técnica cuántica ha factorizado 56.153.

La factorización de grandes números es un paso importante en mucha criptografía, por lo que podría haber enormes implicaciones si esta tecnología logra escalar.

No es un problema difícil.
Es tan simple que cualquier computadora, con el tiempo suficiente, puede hacerlo probando todos los casos posibles. Se realizó en una computadora desde 1948 (primer programa).

Entonces su pregunta puede ser, ¿por qué lleva tanto tiempo?
Incluso entonces, recuerdo una actuación de Wim Klein en 1972, donde factorizó un impresionante número de 20 dígitos en el momento en que necesita “deletrearlo”.

Entonces su pregunta puede ser, ¿por qué el factoring toma más y más operaciones a medida que aumenta el tamaño del número? Bueno, básicamente porque nadie descubrió un método mucho mejor que el que involucra probar todos los divisores posibles. Todos los métodos propuestos (como los métodos generales de detección de números) son trucos para mover el problema desde divisiones enteras en otros campos. Menos pruebas y la forma más rápida de dividir, pero básicamente finalmente tienes que probar muchos casos, dependiendo el tamaño de tu número.

Habiendo dicho que todavía no encontramos una manera eficiente de hacerlo, debo agregar que no sabemos si existe un algoritmo eficiente. Probablemente no, de lo contrario el RSA iría a la quiebra. Pero tenemos que admitir que sigue siendo un problema abierto.

En conclusión,. si supiéramos por qué es “difícil” factorizar un entero, entonces posiblemente encontraríamos un algoritmo mejor.

Porque los primos son volubles. Es difícil encontrar patrones que pueda inducir con confianza, incluso cuando trabaja en problemas simples.

Esto es cierto incluso si solo desea contar primos dentro de un rango. Si tomara una recta numérica del 1 al 1,000,000,000 y marcara todos los números primos, la imagen no le daría suficiente orientación para lo que sucede más allá de la marca de 1,000,000,000.