stringtranslate.com

Algoritmo de Cornacchia

En teoría de números computacionales , el algoritmo de Cornacchia es un algoritmo para resolver la ecuación diofántica , donde d y m son primos entre sí . El algoritmo fue descrito en 1908 por Giuseppe Cornacchia. [1]

El algoritmo

Primero, encuentre una solución para (quizás usando un algoritmo que se menciona aquí ); si no existe, no puede haber una solución primitiva para la ecuación original. Sin pérdida de generalidad, podemos suponer que r 0metro/2 (si no, entonces reemplace r 0 con m - r 0 , que seguirá siendo una raíz de - d ). Luego use el algoritmo euclidiano para encontrar,y así sucesivamente; deténgase cuando. Sies un entero, entonces la solución es; de lo contrario, intente con otra raíz de - d hasta que se encuentre una solución o se hayan agotado todas las raíces. En este caso no hay una solución primitiva.

Para encontrar soluciones no primitivas ( x , y ) donde mcd( x , y ) = g ≠ 1 , tenga en cuenta que la existencia de dicha solución implica que g 2 divide a m (y, equivalentemente, que si m no tiene cuadrados , entonces todas las soluciones son primitivas). Por lo tanto, el algoritmo anterior se puede utilizar para buscar una solución primitiva ( u , v ) para u 2 + dv 2 = metro/g 2 . Si se encuentra dicha solución, entonces ( gu , gv ) será una solución a la ecuación original.

Ejemplo

Resuelve la ecuación . La raíz cuadrada de −6 (mod 103) es 32, y 103 ≡ 7 (mod 32); como y , hay una solución x  = 7,  y  = 3.

Referencias

  1. ^ Cornacchia, G. (1908). "Su di un metodo per la risoluzione in numeri interi dell' equazione ". Giornale di Matematiche di Battaglini . 46 : 33–90.

Enlaces externos