def signature_seq(signature, limit):
    products = set((1,))
for factor in signature:
    new_products = set()
for prod in products:
    x = factor * prod
while x <= limit:
    new_products.add(x)
x *= factor
products.update(new_products)
products.remove(1)
return products
Enumeration of all factor products less than a maximum