|| (Source: corrigé de l'exercice 13 || Résolution d'équaitions diophantines de la forme: || a*x+b*y=c, où a,b,c coefficients entiers donnés x,y entiers inconnus || La solution prend en général la forme: || x = x0+k*dx || y = y0+k*dy || x0,y0,dx,dy sont des entiers déterminés en fonction des coefficients || k est un entier arbitraire || En plus de quelques fonctions auxiliaires, il est défini une fonction || diophante a b c || Cette fonction fournit son résultat sous la forme d'un tuple || ((x0,dx),(y0,dy)) || Fonctions permettant de décomposer les tuples solution de diophante x0 :: ((num,num),(num,num))->num x0 ((x,dx),(y,dy)) = x delta_x :: ((num,num),(num,num))->num delta_x ((x,dx),(y,dy)) = dx y0 :: ((num,num),(num,num))->num y0 ((x,dx),(y,dy)) = y delta_y :: ((num,num),(num,num))->num delta_y ((x,dx),(y,dy)) = dy || Change de signe la solution x de diophante neg_x :: ((num,num),(num,num))->((num,num),(num,num)) neg_x ((x,dx),(y,dy)) = ((-x,-dx),(y,dy)) || Change de signe la solution y de diophante neg_y :: ((num,num),(num,num))->((num,num),(num,num)) neg_y ((x,dx),(y,dy)) = ((x,dx),(-y,-dy)) || Échange les solutions x et y de diophante ech_xy :: ((num,num),(num,num))->((num,num),(num,num)) ech_xy ((x,dx),(y,dy)) = ((y,dy),(x,dx)) || La fonction principale diophante :: num->num->num->((num,num),(num,num)) diophante 0 0 c = undef diophante a 0 c = ((c div a,0),(0,1)), if c mod a=0 = undef, otherwise diophante a 1 c = ((0,1),(c,-a)) diophante a b c = neg_x (diophante (-a) b c), if a<0 = neg_y (diophante a (-b) c), if b<0 = ech_xy (diophante b a c), if a