j'ai essayé d'implémenter l'algorithme d'Euclide étendu dans Z:
Code : Tout sélectionner
ixgcd(a,b):={
local u0,u1,v0,v1,r0,r1,q;
if (b=0) { return [sign(a),0,abs(a)]; };
if (b<=0) {
[u0,v0,r0] := ixgcd(a,-b);
return [u0,-v0,r0]
};
u0, u1 := 1, 0; // on suppose que b>0
v0, v1 := 0, 1;
r0, r1 := a, b;
while (r1!=0) {
q := iquo(r0,r1);
r0, r1 := r1, irem(r0,r1);
u0, u1 := u1, u0-q*u1;
v0, v1 := v1, v0-q*v1;
};
return [u0,v0,r0];
}:;
Le même algorithme donne des résultats faux pour les polynômes. Des suggestions?
Merci!