Find the smallest integer $k \geq 2$ such that for every partition of the set $\{2, 3,..., k\}$ into two parts, at least one of these parts contains (not necessarily distinct) numbers $a$, $b$ and $c$ with $ab = c$.
I think the answer is 32.
My solution: Assume to the contrary. Put 2 in, say, set A. 4 must be in set B. 16 must be in set A. If 8 is in set A, then $2 \cdot 8 =16 \implies$ Contradiction. If 8 is in set B, then $2 \cdot 16=8 \cdot 4 =32 \implies$ Contradiction. It's simple but a little tedious to find a set with $k=31$ that doesn't work- the trick's to put the primes (and 16) together. Here's one: $(2,3,5,7,11,13,16,17,21,23,29,31)$ and $(4,6,8,9,10,12,14,15,18,19,20,22,24,25,26,27,28,30)$.
Is there a better and more formalized explanation than this?
You asked particularly about your opening argument. It looks good to me - I tried writing out a proof and the best I could come up with is as follows:-
$2^2=4$ and $4^2=16$ and so the set not containing $4$ must contain both $2$ and $16$. Then $8=\frac{16}{2}$ is in the same set as $4$. But now $32=2\times 16=4\times 8$ cannot be in either set.
In the second part you could perhaps say that for $k<31$ simply restrict any solution for $31$ to the smaller numbers.
A simple split is $A=\{2,3\}\cup\{x|x\ge16\}, B=\{x|4\le x<16\}$.