Я читаю Глава 3 Джошуа Блоха Эффективная Java. В пункте 8: всегда переопределяйте hashCode при переопределении равных, автор использует следующий комбинирующий шаг в своей хэш-функции:
result = 37 * result + c;
Затем он объясняет, почему выбрано 37 (выделено мной):
Множитель 37 был выбран потому, что он является нечетным простым. Если бы это было ровно и умножение переполнено, информация будет потеряна, поскольку умножение на два эквивалентно сдвигу. Преимущества использования простого числа меньше ясно, но для этой цели традиционно использовать простые числа.
Мой вопрос, почему имеет значение, что фактор объединения (37) нечетный? Разве переполнение не приведет к потере информации независимо от того, был ли этот фактор нечетным или даже?