因为您想要乘以的数量以及要插入的存储桶的数量具有正交素数分解。
假设要插入8个桶。如果您要用来乘以的数字是8的倍数,则插入的存储桶将仅由最低有效项(一个根本没有相乘)确定。类似的条目将发生冲突。不适用于哈希函数。
31是一个足够大的素数,因此不可能被它整除(实际上,现代的Java HashMap实现将存储桶的数量保持为2的幂)。

因为您想要乘以的数量以及要插入的存储桶的数量具有正交素数分解。
假设要插入8个桶。如果您要用来乘以的数字是8的倍数,则插入的存储桶将仅由最低有效项(一个根本没有相乘)确定。类似的条目将发生冲突。不适用于哈希函数。
31是一个足够大的素数,因此不可能被它整除(实际上,现代的Java HashMap实现将存储桶的数量保持为2的幂)。