Question: How to improve a procedure ?

Fract := proc (P::posint, Q::posint) local p, q; for p to P-1 do for q to Q-1 do if is((P-p)*q-p*(Q-q) = 1) then return p/q, P/Q, (P-p)/(Q-q) end if end do end do end proc:#this procedure works Fract1 := proc (P::posint, Q::posint) local p, q; `~`[`~`[`/`@op]](select(type, map2(eval, [[p, q], [P-p, Q-q]], [isolve((P-p)*q-P*(Q-q) = 1)]), [[posint$2]$2]))[] end proc:#this procedure don't work Fract(7, 81);Fract1(7,81); Fract(39, 97);Fract1(39,97); Fract(101, 143);Fract1(101,143); Fract(11, 80);Fract1(11,80); Fract(15, 37);Fract1(15,37); Fract(22, 39);Fract1(22,39); Fract(25, 37);Fract1(25,37); Fract(21, 91);Fract1(21,91); Fract(13, 19);Fract1(13,91);
Please Wait...