The number of ctors shall be much smaller than the number of instance methods

Classes that have many different ctors stink. They are in quite often different classes mangled into one. Convenience ctors that call this() are not much a problem, but a Java idiom, as there are not default argument values in the Java language.

The really problematic ones are those who take different object-types as an arguments that cause the class to behave differently. My most prominent example I came across was a Menu-structure where depending on the ctor-arg a node became either a template or an instance.

A class is a type that defines its behavior, the behavior must not  be alterable by values that are passed to it either during construction or later, unless

How is this related to the number of methods? In fact, if the numerous ctors alter the behavior of a class, it becomes a pretty generic thingy. You cannot do much with it anymore, thus more methods are defined outside in “helper-” and sub-classes. If the the real stuff went to sub-classes, the remedy is in many cases the deletion of the type in question where all exisiting functionality is pushed down to the sub-classes.

For the infamous “helpers” a bit more work need to be done. There is no standard refactoring that can transform a method call into a block of code of an instance method.