標籤:

干支紀年簡便推演算法

我國自東漢(公元4年)推行干支紀年。干支是天乾和地支的合稱。干指天干,有十個字元。(一) 天干表:0 甲 、1乙、2丙、3丁、4戊、5己、6庚、7辛、8壬、9癸。上表中漢字是天干字元,數字是序號。為了計算方便,採用0~9這十個數字元號標序。支指地支,有十二個字元。(二) 地支表0子、1丑、2寅、3卯、4辰、5巳、6午、7未、8申、9酉、10戌、11亥。同樣,上表中漢字是地支字元,數字是序號。十天干與十二地支按順序搭配組合成干支。如:甲子、乙丑、丙寅······因為10與12的最小公倍數[10,12]=60,所以,按照這個排法,當十個天干符號排完六輪,十二個地支符號排完五輪時,正好搭配組合成六十個不同的干支符號,再排下去就周而復始循環往複了,此正所謂「六十甲子輪流轉」。公曆年份是干支什麼年,採用先算天干再算地支的方法推算就簡便得很。先算天干天干有十個字元,用於標序就是10年一輪轉循環。干支紀年從公元4年開始,所以公元4年對應天干「甲」,數序「0」。天干公式:公曆年份(Y)÷10=M······R(餘數)R-4=K(序號)查天干表序號K對應的字元就是這一年的天干。如果餘數R比4 小,R就加上10再減去4。(天干10年輪轉之理)再算地支地支公式:公曆年份(Y)÷12=M······R(餘數)R-4=K(序號)查地支表序號K對應的字元就是這一年的地支。如果餘數R比4 小,R就先加上12再減去4。(地支12年輪轉之理)例:推算1911年的干支。先算天干1911÷10=191·····1(餘數1比4小要加上10再減4)1+10-4=7      查天干表7對應「辛」,這一年的天干是辛。再算地支1911÷12=159······3(餘數3比4小要加上12再減4)3+12-4=11   查地支表11對應「亥」,這一年的地支是亥。天干地支合起來就是「辛亥」,1911年是辛亥年。例:推算1894年的干支。1894÷10=189······4      4-4=0查天干表0對應甲,這一年的天干是甲。1894÷12=157······10    10-4=6查地支表6對應午,這一年的地支是午。天干地支合起來是甲午,1894年是甲午年。公元前年序因為是倒序,所以其干支推演算法也有所不同。計算餘數的方法與上同,得出餘數後,算天干序號公式:7-R=K。 若餘數R比7大,7要先加上10後再減去R。算地支序號公式:9-R=K。 若餘數R比9大,9要先加上12後再減去R。例:推算公元前221年的干支。221÷10=22······1 ,7-1=6,查天干表6對應庚,這一年的天干是庚。221÷12=18······5,9-5=4,查地支表4對應辰,這一年的地支是辰。天干地支合起來就是庚辰,公元前221年是庚辰年。
推薦閱讀:

二分法查找原理
4.機器學習演算法應用---損失函數
哈希演算法
18. 快速冪
調整數組順序使奇數位於偶數前面

TAG:演算法 |