I don't think such a program exists per se (although you never know what people may have done for their own use), but you could write it yourself in your favorite language.
I myself have written functions (in Lua) for determining resistor values for a divider, taking the ratio, an acceptable range for the values (there is often a required range, you can't just pick any random values depending on the application), and the range of E-series to choose from. It yields the closest match for the ratio. I suppose I could elaborate on it to write something that would list all possible values given a max allowed error for the ratio, instead of just the closest match, and then call it for all dividers in a design. Then there would be a table of tables of values. Another function would just go through that and minimize the total number of distinct values required.
I have a feeling that in many cases, it would not find many repeated values, unless you're very lucky, but at least it would help you know that you can't do better.