可以看出,完美散列实际中并不常见,在大多数的情形下,关键码的取值是远远大于词条的个数的,设关键码的取值为 [ 0 , R ) [0, R) [0,R), 词条的个数为 N N N,则 R > > N R...设散列表的大小为 M M M,此时,从定义域 [ 0 , R ) [0, R) [0,R)到值域 [ 0 , M ) [0, M) [0,M)的映射不可能是单射,即不可避免地会出现不同的关键码映射到散列表中的同一个位置...首先,除余法得到的散列地址,依然存在一定程度的连续性,即原来相邻的关键码对应的散列地址也仍然是相邻的;其次,在除余法中关键码较小的那些词条,始终被映射到散列表的起始区段,其中关键码为零的元素,其散列地址总是零...这里,我们首先需要提到费马的双平方定理,即任意素数 p p p可以表示为两个正整数的平方和,当且仅当 p = 4 k + 1 p = 4k + 1 p=4k+1。...就可以推知,任意自然数 n n n可以表示为一对整数的平方和,当且仅当在其素分解中,形如 M = 4 k + 3 M = 4k + 3 M=4k+3形式的每一个素因子均为偶数次方。