余数总是在一个固定的范围内
同余定理:如果对a和b整除c,所得的余数相同,那么a和b对模c同余。
余数可以用来区分「奇数」和「偶数」。如果数字a除以2,余数为1则为「奇数」,余数为0则为「偶数」。
这么说来,同余定理是用来分类的。
那么在计算机中,用到了余数吗?其实哈希表(Hash)就是应用之一,也成为散列表。简单来说,就是将任意长度的输入,通过哈希算法,变成固定长度的输出。这个过程是不是跟上述求余的过程很像?
比如,在你想快速读写100万条数据记录的时候,要达到高速读写,理想的情况下,就是在内存中开辟一个连续的空间来存储这些数据,但是由于现实原因,没有这么大的连续空间来实现,那怎么办呢?
我们可以考虑下能不能使用若干个较小连续的空间,而在每个连续空间中存储一定数量的数据。比如我们找到了100个连续的空间,这些连续空间是彼此分隔开的。并且每个连续空间可以存储1万条数据连续存放,那么我们可以用余数来设计一个散列表,实现哈希结构。
公式:「f(x) = x mod size」
x是被转换的数值,size是连续存储空间的大小,mod是求余操作。
通过余数,我们就可以将任何数,转换到有限范围内的一个数值,来确定将数据放在何处。
比如,f(x) = x mod 100;
数据1和100,求余最后余数都是1,那么数据1和100都放入第1个连续空间中。