Well these days almost all specialty control algorithms are coded into a microcontroller so that software can do almost anything that you can care to dream up.
If you must consider the use of a discrete counter component then the way this is done is to use a counter (in your case a 4-bit one would do fine) that has a parallel load capability. Design the counter to load a starting count and set to count down on the clock time. The counter would also need an output that tells you when the counter current count is all zero bits. This all zeros detect output would connect back to the synchronous load input of the counter to make it reload the parallel value at the next clock.
With this scheme you can setup the counter to divide by 2, 3, 4 up to 16. The decoded all zeros output can be used to indicate the divided by pulse.
If you make the parallel input load value variable you could change the divide by value on the fly.
A counter suitable for this could be TI's 74HC161 part. This part can only count UP and has a decode output that tells when all the counter bits are 1's. So you set the parallel load value to count that gives the desired divide by ratio as the difference of 15 and the load value. So to divide by three you would load a value of 13. On this part the RCO output is inverted and fed back into the LD# input.