### 6.7.27 Reste chinois pour des listes d’entiers : chrem

chrem a comme argument deux listes de même longueur.
chrem renvoie une liste de deux entiers.
Par exemple, chrem([a,b,c],lcm(p,q,r)) désigne une liste formée de deux entiers :
le premier entier est un nombre x vérifiant :
x=a mod p et x=b mod q et x=c mod r.
Il existe toujours une solution x si p et q sont premiers entre eux, et toutes les solutions sont congrues modulo p*q*r
Attention à l’ordre des paramètres, en effet on a :
chrem([a,b],[p,q])=ichrem([a,p],[b,q])=
ichinrem([a,p],[b,q])
Exemples :
Trouver les solutions de :

⎧ ⎨ ⎩ |
x= | 3 (mod 5)
x= | 9 (mod 13)

On tape :

chrem([3,9],[5,13])

On obtient :

[-17,65]

ce qui veut dire que x=-17 (mod 65) Trouver les solutions de :

⎧ ⎪ ⎨ ⎪ ⎩ |
x= | 3 (mod 5)
x= | 4 (mod 6)
x= | 1 (mod 9)

On tape :

chrem([3,4,1],[5,6,9])

On obtient :

[28,90]

ce qui veut dire que x=28 (mod 90)
Remarque
chrem peut aussi être utiliser pour trouver les coefficients de polynômes qui sont connus modulo plusieurs entiers, par exemple trouver ax+b modulo 315=5 × 7 × 9 tel que :

⎧ ⎪ ⎨ ⎪ ⎩ |
a= | 3 (mod 5)
a= | 4 (mod 7)
a= | 1 (mod 9)
| , |
⎧ ⎪ ⎨ ⎪ ⎩ |
b= | 1 (mod 5)
b= | 2 (mod 7)
b= | 3 (mod 9)

On tape :

chrem([3x+1,4x+2,x+3],[5,7,9])

On obtient :

[-17x+156),315]

ce qui veut dire que a=-17 (mod 315) et que b=156 (mod 315).