Let A = {a_1,...,a_n} be a set of numbers. We can assume all elements of A are integers.

Is there any efficient way to partition A into two sets B = {b_1,...,b_k} and C = {c_1,...,c_l} such that (b_1\*...*b_k) - (c_1\*...*c_l) is minimal?

Is the problem anything easier if we let A be a set of strictly positive integers? What if we only let prime numbers?