【发布时间】:2018-03-23 00:01:45
【问题描述】:
我如何证明散列函数h(x) = x² mod 4 只产生{0, 1},其中 x 作为自然数的一个元素?
【问题讨论】:
我如何证明散列函数h(x) = x² mod 4 只产生{0, 1},其中 x 作为自然数的一个元素?
【问题讨论】:
让我们先介绍偶数,2n(其中n 是自然数):
(2n)2 = (2n)(2n) = (2)(n)(2)(n) = (2)(2)(n)(n) = 4n2 = 4(n2)
这是四的精确倍数,因此除以四时的余数总是为零。
现在让我们讨论奇数,2n + 1:
(2n + 1)2 = (2n + 1)(2n + 1) = (2n)(2n) + (2n)(1) + (1)(2n) + (1)(1) = 4n2 + 2n + 2n + 1 = 4n2 + 4n + 1 = 4(n2 + n) + 1
这正好比四的倍数多一,因此除以四时的余数总是为一。
现在,让我们看看任何既不是偶数也不是奇数的自然数。
等一下,没有。我想这意味着我们已经完成了:-)
而且,在有人指出某些语言在参数为负时可能会给出 负 余数之前,这实际上并不适用于这里,因为自然数的平方永远不可能 否定的。
【讨论】:
{0, 1, 2, 3},而不是所有自然数的集合。如果表达式涉及 (x mod 4)^2 而不是 (x^2) mod 4,那么您所说的将是正确的 - 证明需要在函数的 整个 域中详尽无遗(如果您有额外的信息来解释 为什么你只需要为那些数字展示它,这真的应该是你证明的一部分)。