1. A computer program product comprising a non-transitory computer-readable storage medium, the computer readable storage medium storing a set of instructions, which, when performed by a computer, cause the computer to perform the following steps: (a) receiving, from a user interface, a set of integer multipliers and an integer degree greater than 1, d; (b) choosing a subset of a given set of target integers, the chosen subset defining an index set, such that elements of the index set generate all elements of the given set of target integers using a target generation function; (c) modifying the index set by removing an element from the index set which is not necessary to generate an element of the given set of target integers using the target generation function; (d) after modifying the index set, outputting, to the user interface, the index set; (e) before outputting the index set, for some integer n, modifying the index set by replacing n elements with n−1 elements such that, after the modification, elements of the index set still generate all elements of the given set of target integers using the target generation function; and (f) before outputting the index set, repeating steps c and e in succession until no further elements can be removed or replaced from the index set; and wherein step f includes the following ordered sub-steps: (1) performing step c repeatedly until no further elements can be removed from the index set; (2) attempting to perform step e for n=2 until n=d or until step e is performed successfully, whichever occurs first; and (3) looping back to sub-step 1 if step e was successfully performed in sub-step 2, but terminating step f if step e was not successfully performed in sub-step 2.