\\ Piso (parte inteiro de baixo) de número gaussiano myfloor(z) = (floor(real(z))+I*floor(imag(z))); /* Dividir um número gaussiano (a) doutro (b) com resíduo Output é um vetor [d,r] t.q. a = b*d + r e norm(r) < norm(b) se b!=0. */ mydiv(a,b) = { z = a/b; d = myfloor(z); /* EXPLIQUE pq este é errado e precisamos arredondamento em vez de piso!!! */ r = a-b*d; return([d,r]); } mydiv2(a,b) = { if(norm(a)norm(a),return(mygcd(b,a))); if(b==0,return(a)); return(mygcd(b,mydiv(a,b)[2])); }