1 / 11
文档名称:

干支纪年和纪日算法.doc

格式:doc   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

干支纪年和纪日算法.doc

上传人:875845154 2016/2/21 文件大小:0 KB

下载得到文件列表

干支纪年和纪日算法.doc

文档介绍

文档介绍:干支纪年和纪日算法(怎样从已知年份和日期得到对应的干支纪年和纪日)摘要:从已知年份计算干支纪年很简单:年份数减3,除以10的余数是天干,除以12的余数是地支。从已知日期计算干支纪日的公式和蔡勒公式很相像,如下:g=4C+[C/4]+5y+[y/4]+[3*(M+1)/5]+d-3z=8C+[C/4]+5y+[y/4]+[3*(M+1)/5]+d+7+i(奇数月i=0,偶数月i=6)其中C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月按上一年的13月和14月来算。g除以10的余数是天干,z除以10的余数是地支。巧妙运用和干支有关的几个计算公式,还可以在没有万年历的情况下推算出古书里的干支纪日对应的公历日期。------------------------------------------------------------------------------干支纪日,从夏朝就开始使用了。根据对中国古代历史典籍《春秋》中记载的日食的研究,我国的干支纪日,从鲁隐公三年二月己巳日(公元前720年2月10日)开始,一直到今天,都未曾间断。干支纪年的出现则略晚一些,直到东汉元和二年(公元85年)政府才下令在全国实行,至今也未曾间断。因此,凡是需要接触中国历史的人,总不免要遇到查某一年的干支或某一日的干支,以及由年干支和日干支推算是哪一年或哪一日的问题。通常,这类转换靠查历书都可以解决。但既然干支也是一个循环系统,自然也就有从年份和日期求干支的公式。在介绍求年干支和日干支的公式前,先把干支的特点介绍一下。干支是天干和地支的组合。天干有十个,即甲、乙、丙、丁、戊、己、庚、辛、壬、癸;地支有十二个,即子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。天干和地支从“甲子”开始,按顺序逐一相配,各用到最后一个时,再从第一个开始继续相配,就形成了六十个干支,也称“六十花甲子”。为什么是六十个干支呢?这个从数学上很容易回答。根据干支的构成条件,其循环周期必然是天干数和地干数的最小公倍数。而60正是10和12的最小公倍数。如果我们把“甲子”编为1号,“乙丑”编为2号,这样编下去,就可以得到一个干支和序号的对照表,如下:,不难发现,由序号得到对应干支是很容易的,序号除以10的余数就是天干的序数(如果余数是0,则为最后一个天干癸),序号除以12的余数就是地支的序数(如果余数是0,则为最后一个地支亥)。比如37号干支,因为37mod10=7(mod表示取余数),对应的天干是庚,37mod12=1,对应的地支是子,所以37号干支就是庚子。显然,一个整数除以10的余数就是它的个位数,这就使求天干更方便了。而由干支推它的序号,也不困难。这其实就是一个同余方程组的求解问题,我们用初等数论中的中国剩余定理就可以解决。比如要算戊午的序号是多少,根据上面由序号得到对应干支的原理,很容易得到如下方程组:{xmod10=5{xmod12=。根据中国剩余定理,有:x≡6*5-5*7(mod60)=55,。一般地,若天干的序号为m,地支的序号为n,则干支的序号为:x≡6m-5n(mod60)(1)简单点说,如果6m-5n的结果是正数,这个数就是干支的序号;如果是负数,把它加上60就是干支的序号。了解了干支及其序号的相互推算,下面我们先来介绍年干支的求算。需要说明的是,干支纪年纪的是农历年,而不是公历年。但因为农历年的岁首和公历年的岁首相隔较近,使农历年总是和某一公历年的大部分重合,因此,通常也用公历年的年份表示和它大部分重合的农历年。这样我们就很容易给出农历年的干支序号为:x=(Y-3)mod60,(2)其中Y是年份。得到了干支序号x,就可以求出相应的干支来。比如2004年的干支序号:x=(2004-3)mod60=2001mod60=21,21mod10=1,天干为甲,21mod12=9,地支为申,因此,2004年是甲申年。细心观察,我们可以发现,其实用Y-3直接除以10,就可以得到天干,用Y-3直接除以12,