使用hash表时,计算hash值,为什么常常选取一个素数,然后对除以这个素数取余,一般的整数不行吗?
longj 2004-08-09 09:49:18 如下,使用素数作为hash表容量,算出来的值还要对这个素数取余,
难道普通整数不行么? 比如10000,8888
inline long hash_fun1(const std::string& c, const long prime)
{
int n = c.length();
const char* d = c.c_str();
long h = 0;
for (int i = 0; i < n; ++i, ++d)
h = (h << 2) + *d;
return ((h >= 0) ? (h % prime) : (-h % prime));
}