下午在学习Bruno的数据结构那本书的散列函数时,碰到了一个神奇的数:
2654436769
因为这个数得到了很分散的散列值,不得不感叹数学的妙趣。
附代码段:
const unsigned int k = 8 * sizeof(unsigned int),
m = 10, a = 2654435769;
for(unsigned int ui = 1000; ui <= 10001; ++ui)
{
std::cout << (ui * a << ( k - m) ) << " ";
if((ui - 1000 + 1 ) % 10 == 0)
std::cout << std::endl;
}
如果想会用计算机解决问题,要把数学当作一门基本功夫。就像要练少林十八
绝技,得先扎好马步。