Soit donc l'équation
, où
, et les entiers
et
sont premiers entre eux. On suppose
également premiers entre eux.
On obtient d'abord
tel que
, en utilisant n'importe quelle méthode de calcul de racines carrées modulaires. Si
n'est pas un résidu quadratique modulo
, l'équation de départ n'a pas de solution. Puis on déploie l'algorithme d'Euclide étendu sur la paire
, ce qui donne la séquence suivante :

On arrête lorsque l'on atteint un rang
tel que
. Si
, l'équation de départ n'a pas de solution. Dans le cas contraire, on vérifie que
est un carré. Si ce n'est pas le cas, l'équation de départ n'a pas de solution. Sinon, on conclut en exhibant une solution
Les solutions de ce type sont dites primitives. Si maintenant on ne suppose plus
premiers entre eux, alors
! en particulier, si
est sans carrés, toutes les solutions de l'équation sont primitives. Sinon, on note
tel que
et on résout l'équation
avec
. Une solution non-primitive est alors obtenue en prenant
.
La description de Cornacchia ne contenait pas de preuve que cet algorithme est correct. Il a fallu pour cela attendre la fin du 20e siècle, et plusieurs preuves très différentes ont depuis été proposées[7],[8],[9], dont un argument élégant de François Morain par réduction au problème de Thue[10]. L'algorithme de Cornacchia s'étend aisément à des anneaux plus larges que
, notamment l'anneau
des entiers de Gauss[11].