天干地支計年的演算法
天干地支的演算法
今年海南高考歷史試題的第一題考了一道干支紀年法,問1900年八國聯軍侵華應該是什麼年(用干支表示)
題目如下:1.中國古代以干支紀年,天干是「甲、乙、丙、丁、戊、己、庚、辛、壬、癸」,地支是「子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥」。甲午戰爭發生於1894年,八國聯軍侵華的1900年應是( )
A.己亥年 B.庚子年 C.辛丑年 D壬寅年
首先我們先要明白天干與地支是如何搭配的
天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸
地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。十天干與十二地支按順序兩兩相配,從甲子到癸亥,共六十個組合,即六十甲子。(10與12的最小公倍數是60)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
甲子 |
乙丑 |
丙寅 |
丁卯 |
戊辰 |
己巳 |
庚午 |
辛未 |
壬申 |
癸酉 |
甲戌 |
乙亥 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
丙子 |
丁丑 |
戊寅 |
己卯 |
庚辰 |
辛巳 |
壬午 |
癸未 |
甲申 |
乙酉 |
丙戌 |
丁亥 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
戊子 |
己丑 |
庚寅 |
辛卯 |
壬辰 |
癸巳 |
甲午 |
己未 |
丙申 |
丁酉 |
戊戌 |
己亥 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
庚子 |
辛丑 |
壬寅 |
癸卯 |
甲辰 |
乙巳 |
丙午 |
丁未 |
戊申 |
己酉 |
庚戌 |
辛亥 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
壬子 |
癸丑 |
甲寅 |
乙卯 |
丙辰 |
丁巳 |
戊午 |
己未 |
庚申 |
辛酉 |
壬戌 |
癸亥 |
序號 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
天干 |
甲 |
乙 |
丙 |
丁 |
戊 |
己 |
庚 |
申 |
壬 |
癸 |
|
|
序號 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
地支 |
子 |
丑 |
寅 |
卯 |
辰 |
巳 |
午 |
未 |
申 |
酉 |
戌 |
亥 |
1894年是甲午年,那麼1895年的天干是乙,依此類推,1900年的天干就是庚;同樣,1894年的地支是午,1900年的地支就是子;所以1900年是庚子年。如果大家還想到1901年八國聯軍脅迫清政府簽訂了《辛丑條約》,就是1901年是辛丑年,那麼天干與地支的序號都往前推一下,也可以推出來1900年是庚子年。(《辛丑條約》中的所涉及的賠款,因為是針對1900年(庚子年)的義和團運動而規定,所以也叫庚子賠款。)
如果沒有告訴你相鄰的某個年份是什麼年,那麼又怎樣推算呢?比如,1861年用干支紀年應是?1984年用干支紀年應是?
這裡有一個計算的公式:N=X-3-60m(0≦N﹤60,m是一個自然數)
N是60個干支的序號,比如N=1時就是甲子,X就是公元某某年。
那麼按照這個公式,1861年的序號就是:1860-3-60m,那麼就取m=29,這樣N=58,如果取m=30的話,N=-2,這時就要加60,也就是說0≦N﹤60,如果N=0,那麼就是第60個干支。現在知道與1861年對應干支是第58個,但是如果沒有上面那個表格可供查閱,怎麼辦呢?我們知道天干是10個,地支是12個,10天干與12地支按順序兩兩相配,那麼第58號對應的天乾的序號應是58÷10的餘數,餘數是8,第八個天干是申;同樣,第58號對應的地支的序號是58÷12的餘數,餘數是10,第十個地支是酉,所以1861年是農曆辛酉年。
所以天乾的序號A=mod(N,10),地支的序號B= mod(N,12)
(大家就是對於m應該取多少,不用去想,很簡單,就像小學生列除法算式一樣,N-3那個數除以60,所得的商數就是m, 餘數就是N)
注意:這裡的公式只適用於公元後的年份
公元前的計算公式應是N=X-2-60m,(因為公元前1年後就是公元元年也就是公元1年,沒有公元0年),(X就是一個負數了,m也取負數)
不過不知道這個公式是否準確。前面的公式N=X-3-60m來源於《簡明天文學教程》 作 者: 餘明 ;出版社: 科學出版社。後面一個是我自己想的。
下面一個網友的帖子有一個這樣的計算方法,大家可以參考。網址是:http://www.5000han.com/bbs/thread-
(常識)天干地支的計算方法
一.西元後的:
天干:甲4 乙5 丙6 丁7 戊8 己9 庚0 辛1 壬2 癸3 如1894年末尾一個數是4就甲年,依此類推 地支:子4 丑5 寅6 卯7 辰8 巳9 午10 未11 申0 酉1 戌2 亥3 換算:1894除以12,餘數是幾,就在地支中找幾. 二.西元前的: 天干:甲7 乙6 丙5 丁4 戊3 己2 庚1 辛0 壬9 癸8 如公元前7年就是甲年依此類推 地支:子-9 丑-8 寅-7 卯-6 辰-5 巳-4 午-3 未-2 申-1 酉0 戌-11 亥-10 換算:如公元前221年,-221除以12,餘數是幾,就在地支中找幾.推薦閱讀:
※學點演算法之字元串的亂序檢查
※機器人解密:從「最大回撤」看風險控制
※收藏!機器學習演算法優缺點綜述
※工作十年之痛苦轉型
※二叉堆