Does intersecting the output of 2 programs give the output of another program?
Let $f$ be a computable bijection from $\mathbb{N}^*$ to $\mathbb{Z}$. For example, $f(1)=0,f(2)=1,f(3)=-1,f(4)=2,\ldots$

Note a non-empty subset of $\mathbb{Z}$ is the range of a program if and only if it is recursively enumerable. On the one hand, the range of a program $P$ can be enumerated by running $P(f(1)),P(f(2)),P(f(3)),\ldots$ On the other hand, for a non-empty recursively enumerable subset $X$ of $\mathbb{Z}$, there exists an enumerator $E$ that enumerates $X$. Suppose $E$ requires $n$ steps to output the first number, we can define a program $P$ that $P(i)$ returns the last number outputted by $E$ within at most $\max\{n,f^{-1}(i)\}$ steps.

Since the intersection of two recursively enumerable sets is still recursively enumerable, your $P_3$ exists if and only if the intersection is not empty.