(In reply to
Playing around on the complex plane. by Jer)
We can prove it. The first sentence of the problem statement establishes that each of a+bi and c+di are Gaussian integers with positive real parts.
Lets say a+bi=x and c+di=y. Then we have xy = x+y. Rearrange that into (x-1)*(y-1) = 1.
Now we must have abs[x-1] * abs[y-1] = 1. Also x-1 and y-1 are Gaussian integers: x, y, 1 are all Gaussian integers and Gaussian integers are closed over addition, subtraction, and multiplication thus x-1 and y-1 are Gaussian integers.
For any nonzero Gaussian integer z we have abs[z]>=1. So then abs[x-1]>=1 and abs[y-1]>=1. But for abs[x-1] * abs[y-1] = 1 we then must have abs[x-1]=1 and abs[y-1] = 1.
But on a complex plane abs[x-1]=1 describes a circle centered at 1+0i with radius 1, therefore x is complex number a distance 1 from 1+0i (also true of y).
At this point we have proven Jer's the assertion that solutions to the original problem will have x=a+bi and y=c+di be a unit distance from 1+0i.
Now since x and y are Gaussian integers and the only Gaussian integers that are a unit distance away from 1+0i are 0, 2, 1+i, and 1-i. We are to discard zero per the problem statement asking for Gaussian integers with positive real part. Then x and y must be limited to just 2, 1+i or 1-i.
At this point it is trivial to construct the possible identities 2*2 = 2+2 and (1+i)*(1-i) = (1+i)+(1-i).