Le PGCD : gcd igcd

### 6.7.2 Le PGCD : `gcd igcd`

`gcd` ou `igcd` désigne le PGCD de deux (ou de plusieurs) entiers ou rationnels ou entiers de Gauss (pour les polynômes voir alors 6.29.7).
On tape :

`gcd(18,15)`

ou

`igcd(18,15)`

On obtient :

`3`

On tape :

`gcd(5,2+i)`

ou

`igcd(5,2+i)`

On obtient :

`2+i`

en effet (2+i)*(2−i)=5
On tape :

`gcd(1+3i,7-4i)`

ou

`igcd(1+3i,7-4i)`

On obtient :

`2+i`

en effet (1+i)*(2+i)= 1+3*i et −i*(2+i)*(3+2i)=(7−4i)
On tape :

`igcd(15/7,50/9)`

ou

`gcd(15/7,50/9)`

On obtient :

`5/63`

en effet 15/7=275/63 et 50/9=705/63.
On tape :

`gcd(18,15,21,36)`

ou

`igcd(18,15,21,36)`

On obtient :

`3`

On tape :

`gcd([18,15,21,36])`

On obtient :

`3`

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([6,10,12],[21,5,8])`

Ou on tape :

`gcd([[6,10,12],[21,5,8]])`

On obtient :

`[3,5,4]`

On peut aussi utiliser la librairie Pari qui a une fonction `gcd` plus générale car `pari("gcd",x,y)` fonctionne aussi lorsque x et y sont rationnels et aussi lorsque x et y sont des listes ou des matrices qui n’ont pas forcément la même dimension (c’est alors le type de y qui donne le type du résultat.
On tape :

`pari("gcd",5/7,50/9)`

On obtient :

`5/63`

car 5/7= 9*5/63 et 50/9=70*5/63.
On tape :

`pari("gcd", [4,3],[20,30,50,75]))`

On obtient une matrice A de dimension 4× 2, c’est aussi une liste de même longueur que y i.e. de longueur 4:

`[[4,1],[2,3],[2,1],[1,3]]`

car gcd(4,20)=4, gcd(3,20)=1, gcd(4,30)=2, gcd(3,30)=3...
Pour obtenir ce résultat avec `Xcas`, on doit taper 2 instructions :

`gcd( [4,4,4,4],[20,30,50,75])`

On obtient la première colonne de A:

`[4,2,2,1]`

et on tape

`gcd( [3,3,3,3],[20,30,50,75])`

On obtient la deuxième colonne de A :

`[1,3,1,3]`

: On tape :

`diag(pari("gcd", [5,4,3,2],[20,30,50,75])))`

ou on tape :

`gcd([5,4,3,2],[20,30,50,75])`

On obtient :

`[5,2,1,1]`

Un exemple
Déterminer le pgcd de 4n+1 et de 5n+3 quand n ∈ ℕ.
On définit :

`f(n):=gcd(4*n+1,5*n+3)`

Puis on tape le programme `essai(n)` qui renvoie pour j=−n à n la liste des valeurs de j,a lorsque le pgcd de 4j+1 et 5j+3 est égal à a≠ 1 :

      essai(n):={
        local j,a,L;
        L:=NULL;
        for (j:=-n;j<n;j++) {
          a:=f(j);
          if (a!=1) {
            L:=L,[j,a];
          }
        }
        return L;
      }

Puis on tape :

`essai(20)`

On obtient :

`[-16,7],[-9,7],[-2,7],[5,7],[12,7],[19,7]`

On voit donc que 4n+1 et 5n+3 sont soit premiers entre eux soit leur pgcd vaut 7 lorsque n∈ [−16,−9,−2,5,12,19] c’est à dire lorsque n=5+k*7.
On doit donc montrer que :
si n!=5+k*7 pour k ∈ ℤ, 4n+1 et 5n+3 sont premiers entre eux, et
si n=5+k*7 pour k ∈ ℤ, 4n+1 et 5n+3 ont 7 comme pgcd.