Tengo dos números, que son el producto de una gran cantidad de números más pequeños que conozco. Quiero encontrar el MCD (Máximo común divisor) de estos dos números. ¿Hay alguna forma de utilizar la factorización parcial que tengo para acelerar el proceso?
En particular, cada número mayor es el producto de números más pequeños, cada uno del orden de . No sé nada sobre la factorización de los números más pequeños.
Editar: Si bien los números de entrada son de aproximadamente 120,000,000 bits, el GCD es de aproximadamente 500,000 bits. Los factores de los números están en particular en secuencia. Todos son enteros en un rango consecutivo.
Todos los algoritmos GCD que he visto hacen uso de los números directamente, no en una forma factorizada ni nada. ¿Hay algún algoritmo que pueda incorporar esta información para acelerar las cosas?
fuente
Respuestas:
Puede calcular los GCD por pares de los factores. Debe dividir los MCD de los factores para evitar encontrar el mismo factor MCD dos veces:
Desafortunadamente, no creo que esto no sea notablemente más rápido que el cálculo del MCD de los dos números A y B.
fuente
Hubo un problema similar que se resolvió de manera razonablemente eficiente: suponga que está utilizando RSA, que se basa en productos de dos primos grandes, donde los productos no se pueden factorizar en un tiempo razonable. Pero si tiene dos productos, pq y p'q 'y p = p' o q = q ', puede calcular su mcd y obtener p = p' o q = q 'y el otro factor es trivial. Por supuesto, si p = p 'y también q = q', entonces esto no es de ayuda.
No imagine que alguien genera mil millones de esos productos y es un poco descuidado. Un hacker descubre que bastantes números son idénticos, por lo que p = p 'y q = q', por lo que es una buena suposición de que bastantes pares tienen un mcd ≠ 1. Y eso ha sucedido en la vida real con enrutadores cuyo cifrado podría ser agrietado como resultado.
Lo siento, no tengo ninguna referencia y la historia es un poco antigua, pero deberías poder encontrarla. Fue hace unos años, tal vez seis más o menos.
fuente