逍遥学能 2015-03-17 14:09
现在,人们只要查看万年历,就可以知道某一年的公农历两种纪年的结果,还可以知道某日是星期几。例如,1949年是己丑年,该年的10月1日是星期六;张之洞卒于1909年,这一年是己酉年(宣统元年)。
但是,万年历不是随手可得。上述问题知其一可否求其余?答案是可以。
一、公历纪年与农历纪年的换算
现在世界上通用的公历,也叫格里哥里历,在我国又叫阳历(我国古代认太阳为阳、月亮为阴)。它根据太阳绕地球一周所用的时间三百六十五又四分之一天,经过长期不断地改进演化,最终由罗马教皇格里哥里十三世于1582.10.15日,在原凯撒历基础上革新颁布实行。英国及其殖民地国家自1752.9.14日起实行。
与公历同排在我国日历上的农历,是我们国家所特有的一种“干支纪年历”, 又叫阴历。它是把一个朔望月,也就是相邻两次朔月(或望月即满月)的时间间隔二十九点五三零六天,作为一个农历月,采用十“天干”与十二“地支”搭配成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
癸亥
按照上表的次序,每年用一对干支表示,这种纪年法叫做“干支纪年法”.从古代文献来看,干支纪年至迟在东汉初期已经普遍使用,直至今天仍然采用.
干支纪年在我国历史学中广泛使用,很多历史事件的年代常用它来表示.例如,甲午战争、戊戌变法、辛亥革命等等.
公历纪年与干支纪年,可以借助于“干支表”(如不记住,用时需要自己编排)和历史知识,通过公式x = n+3+60 m进行换算,其中,是公历纪年数,是表中干支纪年序数,m是绝对值不超过60的合适整数.
该公式可用文字语言表述为:公元年数,等于相应的干支年序数加3再加60的整数倍,其中60是干支纪年最小正周期所含的年数。
因为公元纪年的开头年即公元元年又即公元1年是辛酉年,其干支序数为58,再过“3”年恰好进入下一个干支周期的开头年甲子,所以公式中有“+3”。
例1. 辛亥革命发生在公历哪一年?
解:辛亥年的干支序数n = 48 , 根据历史知识知道,事件大致发生在一百年左右,故取m = 31 ,则公历年数为:x = 48+3+60×31 = 1911.
例2. 求2010年的干支
解:x = 2010 ,选取合适的整数,使整数n在1~60范围内取值,故可取 ,则.由干支表查出相应的干支是庚寅.即2010年是庚寅年.
例3. 求公元前221年的干支.
解:天文纪年法规定,公元元年记为1年,由此公元前一年记为“0年”、公元前二年记为“-1”年、依次前推. 按此规定,公元前221年为“-220年”,取m = -4 ,则干支年序号为:n = -220-3-60×(-4)= 17 ,查表知为庚辰年,这是秦始皇完成统一大业称帝的那一年。
读者不难验证,本文开头提到的建国年和张之洞卒年的两种纪年的正确性。
可见,这种不同纪年相互验证的方法,对考证历史事件发生的年代和历史人物的生卒年龄等,都具有重要的实际应用价值。
二、求星期数
如果我们得知了某日的公历年月日,就可以计算出其星期数,即星期几。这在司法案件查审等领域也是件极有意义的工作,下面我们就给出计算公式。
已知公历A年B月C日,则该日对应的星期数是,下式计算结果除以7所得的余数:
C+[(13M-1)/5]+Y+[Y/4]+[X/4]-2X.
其中,[N]表示不超过N的最大整数;当B = 1或2时,M = B+10 ,当B = 3~12时,M = B-2 ;X、Y满足100X+Y=A,且X、Y为不超过100的自然数.
例1. 1949.10.1日是星期几?
解:C = 1,B = 10,故M = 8,100X+Y = 1949,解得X = 19,y = 49,
C+[(13M-1)/5]+Y+[Y/4]+[X/4]-2X.
= 1+[(13×8-1)/5]+49+[49/4]+[19/4]-2×19
= 1+20+49+12+4-38
= 48
48 = 7×6+6,所以是星期六.
例2. 2010.12.31是星期几?
解:C = 31,B = 12,故M = 10,100X+Y = 2010,解得X = 20,y = 10,
C+[(13M-1)/5]+Y+[Y/4]+[X/4]-2X.
= 31+[(13×10-1)/5]+10+[10/4]+[20/4]-2×20
= 31+25+10+2+5-40
= 33
33 = 7×4+5,所以是星期五.
值得说明的是,星期几的计算公式,只适用于现行公历实行日之后的日期,即一般适用于1582.10.15日以后,英国及其殖民地国家适用于1752.9.14日以后. 反之,如果只知道某日是星期几,不能确定其年月日,要确定还需要多个其它条件,那是一件比较麻烦的事情。关于本公式的合理性,有意深入探讨者,可以阅读本文末所列参考书2.
参考资料:
①《数学的源与流》,张顺燕编著,高等教育出版社2000.9月第一版.
②《初等数论》,潘承洞、潘承彪著,北京大学出版社2003.1月第二版.