2016-04-26 57 views
-1

我读我的notes从算法类(几年前)的结果,我发现这一点:无法理解这个散列函数

enter image description here

它说:假设

h(k)= k mod m,其中m = 4且k = 100,则h(k)= 4

这是真的吗?我会认为4 * 25 = 100,因此h(k)= 0.我错过了什么?

我认为这是一个错字,但我只是检查了笔记的最新版本,它仍然是一样的!

+0

LOL我刚刚在学校有限的数学做,它是粗糙的笑。基本上这是发生了什么:h(k)= k mod m :: h(k)= 100 mod 4 = 0(根据谷歌计算器)。似乎这些笔记是错误的。 – rackemup420

+0

看起来像笔记是错误的,虽然'4 = 0 mod 4'。那是希腊文吗?耻辱它不是在俄罗斯,我相信会有一个“在苏俄”的笑话在那里的某个地方......也许不是一种耻辱,那么... – pseudoDust

+0

@ rackemup420是的,我同意!是的,这是希腊的伪粉尘,对不起; p – gsamaras

回答

1

模运算符永远不会返回该结果,因为它代表整数除法后的余数

所以此规则适用于正整数x和y:

x mod y = z ⇒ z < y 

写上面的模运算的另一个方法是:

⎣x/y⎦.y + z = x 

如果不知为何,你会做到这一点z == y那么很显然你没有⎣x/y⎦部分出现问题。