關鍵詞:剩余,同余定理,數論,hash
參考:
楊迎球,中國剩余定理與同余式組,[D]安順學院數學與計算機科學系,2009.02.15
談數論中的同余及其應用,衡水師專學報[D],2002.03.1
同余理論的一些簡單應用,肇慶學院學報,2013.03.28
《程序員的數學課》——極客時間
百度百科
歷史
有物不知其數,三三數之剩二,五五數之剩三,七七數之剩二。問物幾何?——《孫子算經》卷下二十六
釋義:
有一堆東西不知道有多少數量。三件三件地數,就會剩下兩件;五件五件地數,剩下三件;七件七件地數,剩下兩件。問:這堆東西共有多少件??
解題如下:
條件:除3余2,除7余2,
公倍數=3*7=21
21*1+2=23
證:
23/5=4余3
日常應用:
今天星期5,30天后星期幾?
30/7余2
周五+2天=周日
那么問題來了!某個數盡除7,余數會大于或等于7嗎?
答案是當然不會!
故而我們提煉出:余數在除數的范圍內
同余定理
再思考一個問題:今天是本月1日,周日,本月30天,那么有幾個星期日呢?
每7天(加上本天基礎天1+7),是一個周循環
8、15、22、29
8/7余1
15/7余1
22/7余1
29/7余1
以上這種情況被前人歸納為,同余定理
哈希(Hash)
在現在“區塊鏈”泛濫的時代,你應該不陌生這種加密算法吧;
哈希本質是“將任意?度的輸入,通過哈希算法,壓縮為某一固定?度的輸出”
發現沒?和求余是一樣一樣的
比個喻:
問:有30W條數據,想快速讀寫,一個物理儲存空間放不下。怎么辦?
答:放多個物理空間
問:但數據是連續的,則需要對空間進行關聯
答:我們可以設計一個散列函數,并實現哈希表的結構
散列函數:本質就是個檢索和關聯;
f(x)=y mod size
在這個公式中,Y表示等待被轉換的數值,而size表示有限存儲空間的大小,mod表示取余操作。通過余數,你就能將任何數值,轉換為有限范圍內的一個數值,然后根據這個新的數值,來確定將數據存放在何處。
具像說明:
我們可以通過記錄標號模30的余數,指定某條數據存放在哪個空間。這個時候,我們的公式
就變成了這樣:
f(x)=y mod 30
然后我們就可以把 1、31、61、91、121這些數放在第1個空間中,以此類推,30、60、90、120…放在第30個空間中
這樣 我們就能在30的范圍內檢索出30w條數據。