étant un générateur de , voici l'algorithme :
DEBUT
() ;
On calcule le plus petit j tel que x2j=1 ;
Si j=k alors on s'arrête car u n'est donc pas un carré ;
tant que (* ux=z2, Ord(a)=2h, Ord x=2j, j <h *)
(x,z,h,a) :=(x a2h-j,z a2h-j-1,j,a2h-j) ;
Calculer le plus petit j tel que x2j=1 ;
fin(tant que)
Retourner z ; (* x=1 et z est une racine carrée de u *)
FIN