I don't think so. Look more closely. (x * p) is repeated addition with p integer - we can do this no multiplication involved. Then dividing by q involves finding r such that r * q = x * p. Here, again, we can do this by finding r such that r, added to itself q times, equals x * p. Since q is integer, again, this again involves repeated addition. (It does need an algorithm to find the right value of r. I suppose that trying an arbitrary value, then increasing or decreasing it, would work.)
Yes, that's the "first bit" that I was not raising an issue with.
> dividing by q involves finding r such that r * q = x * p
Which, as you note, requires a trial and error algorithm to find r. But in any case, r is the answer being sought, not the thing we're supposed to be adding to itself some number of times to get the answer.