<pre><code># Subset-Product solver
# with minor improvements

import itertools 
import numpy

s = list(map(int, input('Enter numbers WITH SPACES: ').split(' ')))
print('enter target integer: ')
target = int(input())

# This chunk of code is meant to experiment with no instances
# in poly time.


for i in s:
  if i &lt; 0:
    print('must only be positive integers')
    quit()



check = [];
if numpy.prod(s) % target == 0:
   check.append(target)
if len(check) &lt; 1:
  print(target, 'is a FALSE subset product')
  quit()

if s.count(str(target)+str(' ')) &gt; 0:
   print('yes')
else:
   print('no')
   quit()

def findsubsets(s, n): 
    return list(itertools.combinations(s, n)) 

# Driver Code 
n = len(s)


# This code snippet is a for loop. It also is intended to cut down execution
# time ounce it finds the target integer. (instead of creating all combinations)


res_2 = [];
for i in range(1, len(s)+1):
   if i &gt; 1:
      var = (findsubsets(s, i))
      kk = list(map(numpy.prod, var))
      res_2.append(kk)
   if str(res_2).count(str(target)+str(',')) &gt; 0:
      print('yes')
      quit()

if str(res_2).count(str(target)) &gt; 0:
  print('yes')
</code></pre>

Travis Wells