### 6.28.7 PGCD de polynômes par l’algorithme d’Euclide : `gcd igcd`

`gcd` désigne le PGCD (plus grand commun diviseur) de deux polynômes pouvant avoir plusieurs variables et aussi le PGCD d’une liste de polynômes ou d’une séquence de polynômes pouvant avoir plusieurs variables (voir 6.7.2 pour le PGCD d’entiers). On peut aussi mettre comme paramètres deux listes de même longueur (ou une matrice ayant 2 lignes), dans ce cas `gcd` renvoie le PGCD des éléments de même indice (ou d’une même colonne). On tape :

`gcd([x```^```2-4,x*y-y],[x```^```3-8,y```^```2-x```^```2*y])`

Ou on tape :

`gcd([[x```^```2-4,x*y-y],[x```^```3-8,y```^```2-x```^```2*y]])`

On obtient :

`[x-2,y]`

Exemples
On tape :

`gcd(x```^```2+2*x+1,x```^```2-1)`

On obtient :

`x+1`

On tape :

`gcd(x```^```2-2*x+1,x```^```3-1,x```^```2-1,x```^```2+x-2)`

ou

`gcd([x```^```2-2*x+1,x```^```3-1,x```^```2-1,x```^```2+x-2])`

On obtient :

`x-1`

On tape :

`A:=z```^```2+x```^```2*y```^```2*z```^```2+(-(y```^```2))*z```^```2+(-(x```^```2))*z```^```2`
`B:=x```^```3*y```^```3*z+(-(y```^```3))*z+x```^```3*z-z`
`C:=gcd(A,B)`

On obtient :

`z*x*y+z*x-z*y-z`

On tape :

`factor(A)`

On obtient :

`(y-1)*(y+1)*(x-1)*(x+1)*z```^```2`

On tape :

`factor(B)`

On obtient :

`(x```^```2+x+1)*(x-1)*(y+1)*(y```^```2-y+1)*z`

On tape :

`factor(C)`

On obtient :

`(y+1)*(x-1)*z`

Pour les polynômes à coefficients modulaire, on tape par exemple : On tape :

`gcd((x```^```2+2*x+2) mod 5,(x```^```2-1) mod 5)`

On obtient :

`(1 % 5)*x-1 % 5`

Mais si on tape :

`gcd(x```^```2+2*x+2,x```^```2-1) mod 5)`

On obtient :

`1%5`

car l’opération modulaire se fait après le calcul du PGCD qui a èté calculé dans ℤ[X].