¿Por qué usar un número primo en hashCode?

Me preguntaba por qué los primos se usan en una clasehashCode() ¿método? Por ejemplo, cuando utilizo Eclipse para generar mihashCode() método siempre hay el número primo31 usado:

public int hashCode() {
     final int prime = 31;
     //...
}

Referencias

Aquí hay un buen manual sobre Hashcode y un artículo sobre cómo funciona el hashing que encontré (C # pero los conceptos son transferibles):Pautas y reglas de Eric Lippert para GetHashCode ()

Respuestas a la pregunta(8)

Su respuesta a la pregunta