Algorithme de Cornacchia

En mathématiques, l'algorithme de Cornacchia est une procédure pour résoudre certaines équations diophantiennes généralisant l'équation de Pell-Fermat. Cet algorithme est nommé d'après le mathématicien italien Giuseppe Cornacchia qui l'a introduit en 1908[1], et parfois également attribué au mathématicien irlandais Henry Smith, sous le nom d'algorithme de Cornacchia-Smith[2],[3]. Plus spécifiquement, l'algorithme fournit une solution entière ( x , y ) {\displaystyle (x,y)} de l'équation x 2 + d y 2 = m {\displaystyle x^{2}+dy^{2}=m} , où 1 d < m {\displaystyle 1\leq d<m} , et les entiers d {\displaystyle d} et m {\displaystyle m} sont premiers entre eux.

Cet algorithme est d'un intérêt pratique majeur, car il permet notamment de trouver une représentation d'un premier p {\displaystyle p} comme la norme d'un élément d'une extension quadratique, une étape essentielle par exemple dans la preuve de primalité par courbes elliptiques. Pour cette tâche, l'algorithme de Cornacchia est plus efficace que les méthodes génériques à base de formes quadratiques ou de réduction de réseaux euclidiens[4],[5]. Une autre utilisation importante de l'algorithme de Cornacchia est la génération de courbes elliptiques à multiplication complexe[6].

Description de l'algorithme

Soit donc l'équation x 2 + d y 2 = m {\displaystyle x^{2}+dy^{2}=m} , où 1 d < m {\displaystyle 1\leq d<m} , et les entiers d {\displaystyle d} et m {\displaystyle m} sont premiers entre eux. On suppose ( x , y ) {\displaystyle (x,y)} également premiers entre eux.

On obtient d'abord x 0 {\displaystyle x_{0}} tel que x 0 2 = d mod m {\displaystyle x_{0}^{2}=-d{\bmod {m}}} , en utilisant n'importe quelle méthode de calcul de racines carrées modulaires. Si d {\displaystyle -d} n'est pas un résidu quadratique modulo m {\displaystyle m} , l'équation de départ n'a pas de solution. Puis on déploie l'algorithme d'Euclide étendu sur la paire ( x 0 , m ) {\displaystyle (x_{0},m)} , ce qui donne la séquence suivante :

x 0 = a 0 m + r 0 m = a 1 r 0 + r 1 r i = a i + 2 r i + 1 + r i + 2 {\displaystyle {\begin{aligned}x_{0}&=a_{0}m+r_{0}\\m&=a_{1}r_{0}+r_{1}\\&\,\,\,\vdots \\r_{i}&=a_{i+2}r_{i+1}+r_{i+2}\end{aligned}}}

On arrête lorsque l'on atteint un rang k {\displaystyle k} tel que r k 2 < m < r k 1 2 {\displaystyle r_{k}^{2}<m<r_{k-1}^{2}} . Si m r k 2 0 mod d {\displaystyle m-r_{k}^{2}\neq 0{\bmod {d}}} , l'équation de départ n'a pas de solution. Dans le cas contraire, on vérifie que ( m r k 2 ) / d {\displaystyle (m-r_{k}^{2})/d} 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 x = r k , y = m u 2 d . {\displaystyle x=r_{k},y={\sqrt {\frac {m-u^{2}}{d}}}.}

Les solutions de ce type sont dites primitives. Si maintenant on ne suppose plus ( x , y ) {\displaystyle (x,y)} premiers entre eux, alors gcd ( x , y ) 2 | m {\displaystyle \gcd(x,y)^{2}|m}  ! en particulier, si m {\displaystyle m} est sans carrés, toutes les solutions de l'équation sont primitives. Sinon, on note g {\displaystyle g} tel que g 2 | m {\displaystyle g^{2}|m} et on résout l'équation x 2 + d y 2 = m {\displaystyle x'^{2}+dy'^{2}=m'} avec m = m / g 2 {\displaystyle m'=m/g^{2}} . Une solution non-primitive est alors obtenue en prenant ( x , y ) = ( g x , g y ) {\displaystyle (x,y)=(gx',gy')} .

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 Z {\displaystyle \mathbb {Z} } , notamment l'anneau Z [ i ] {\displaystyle \mathbb {Z} [i]} des entiers de Gauss[11].

Références

  1. (it) Giuseppe Cornacchia, « Su di un metodo per la risoluzione in numeri interi dell' equazione h = 0 n C h x n h = P {\displaystyle \sum _{h=0}^{n}C_{h}x^{n-h}=P}  », Giornale di Matematiche di Battaglini 46,‎ , p. 33-90
  2. (en) Richard Crandall et Carl Pomerance, Prime numbers : A computational perspective, New York, NY, Springer, , 597 p. (ISBN 978-0-387-28979-3, OCLC 68656057, BNF 44641980, lire en ligne), p 106
  3. (la) Henry J. S. Smith, « De compositione numerorum primorum formae 4 λ + 1 {\displaystyle 4\lambda +1} ex duobus quadratis », Journal für die reine und angewandte Mathematik 50,‎ , p. 91
  4. (en-US) François Morain, « Implementing the asymptotically fast version of the elliptic curve primality proving algorithm », Mathematics of Computation, vol. 76, no 257,‎ , p. 493–505 (ISSN 0025-5718 et 1088-6842, DOI 10.1090/s0025-5718-06-01890-4, lire en ligne, consulté le )
  5. (en) Henri Cohen, A Course in Computational Algebraic Number Theory, Springer Berlin Heidelberg, , 536 p. (ISBN 978-3-662-02945-9, OCLC 851379925, lire en ligne)
  6. (en) Richard E. Blahut, Cryptography and secure communication, Cambridge, Cambridge University Press, , 602 p. (ISBN 978-1-107-01427-5, OCLC 880922078, BNF 43850719, lire en ligne), p. 357
  7. (en) Kenneth Hardy, Joseph B. Muskat et Kenneth S. Williams, « A Deterministic Algorithm for Solving n = f u 2 + g v 2 {\displaystyle n=fu^{2}+gv^{2}} in Coprime Integers u {\displaystyle u} and v {\displaystyle v}  », Mathematics of Computation, vol. 55, no 191,‎ , p. 327–343 (DOI 10.2307/2008809, lire en ligne, consulté le )
  8. (en) Julius M. Basilla, « On the solution of x 2 + d y 2 = m {\displaystyle x^{2}+dy^{2}=m}  », Proceedings of the Japan Academy, Series A, Mathematical Sciences 80, no. 5,‎ , p. 40-41
  9. (en) Julius M. Basilla et Hideo Wada, « On the solution of x 2 d y 2 = ± m {\displaystyle x^{2}-dy^{2}=\pm m}  », Proceedings of the Japan Academy, Series A, Mathematical Sciences, vol. 81, no 8,‎ , p. 137–140 (ISSN 0386-2194, DOI 10.3792/pjaa.81.137, lire en ligne, consulté le )
  10. François Morain (dir. Jean-Louis François), Courbes elliptiques et tests de primalité, Lyon, Université Claude Bernard (thèse de doctorat en sciences), 1990, 187 p, Chapitre 2.
  11. (en) Patrick Longa et Francesco Sica, « Four-Dimensional Gallant–Lambert–Vanstone Scalar Multiplication », Journal of Cryptology, vol. 27, no 2,‎ , p. 248–283 (ISSN 0933-2790 et 1432-1378, DOI 10.1007/s00145-012-9144-3, lire en ligne, consulté le )
  • icône décorative Portail des mathématiques