当前位置:   article > 正文

利用干支年反推公元年份的计算公式推导_已知干支年求公元年

已知干支年求公元年

干支纪年,是指中国纪年历法,自上古以来就一直使用的纪年方法。干支是天干和地支的总称。把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。干支纪年与公元纪年可以相互转换。公元年转化为干支年比较好算,干支年转化为公元年目前的流行方法是查表法,先根据干支,查出在干支表中所出的年次,再根据干支年和公元年的关系推算公元年?那么有没有不用查表,就能根据干支利用公式快速计算出干支所处年次的方法呢?

一、公元年转化为干支年

根据公元年数推算这一年的干支,算法比较简单。计算公式:

T=(AD-3) MOD 10                 式(1)

B=(AD-3) MOD 12                 式(2)

式中:T,是Trunk的首字母,代表天干序号;B是Branch的首字母,代表地支序号。AD是Anno Domini的缩写,代表公元;MOD是求余运算符。

比如今年是2022年,根据上述公式,可以推出T=9,B=3。根据表1,天干序号为9的是“壬”。根据表2,地支序号为3的是“寅”,所以2022年是壬寅年。注意:如果T=0,相当于余10,对应“癸”,如果B=0,相当于余12,对应“亥”。

表1 天干序号表
天干序号
1
2
3
4
5
6
7
8
9
10
表2 地支序号表
地支序号
1
2
3
4
5
6
7
8
9
10
11
12

式(1)、(2)中的减3是怎么来的呢?先看表3,一个一个周期60年的干支年次表,从表中可以看出,甲子是一个周期的第1年,癸亥年第60年,而辛酉年是第58年。而公元1年好是我国的辛酉年,是干支年的第58年。所以,往后推3年就到了下一个干支周期的干支1年甲子年,而这一年是公元4年,所以公元4年-干支1年=3年。这就是要减3的原因。

表3  一个周期的干支年次表
干支年次(TB)天干(T)地支(B)
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、查表法

那么如果已经知道干支年,那么能不能反推出公元年呢。比如,想知道“癸丑”年都对应的是公元多少年?网上有好多方法,但大部分都是查表法,从表3查出一个周期中查出“癸丑”年是第50年,然后再利用公式:50+3+n*60,推算出“癸丑”年所有的公元年份,如表4所示。

表4 癸丑年对应的公元年
n公元年
053
2173
3233
4293
5353
6413
7473
8533
9593
10653
11713
12773
13833
14893
15953
161013
171073
181133
191193
201253
211313
221373
231433
241493
251553
261613
271673
281733
291793
301853
311913
321973
332033

2、公式法

那么有没有更快速的一种方法,不用查表,就可以根据干支快速地计算出一个周期中,这对干支对应的年次呢?下边进行逐步探讨。

(1)数字化处理

如果把表3中的天干和地支都由表1、表2中的序号来代替(天干的10用0代替,地支的12用0代替),那么就得到表5。发现这张表得每一行就是干支年次分别对10和12求余的结果。这样就把干支纪年表转化成了1至60对10、12求余的余数表,表中,TB代表干支年次,R10代表干支年次TB除以10的余数,R12代表TB除以12的余数。

表5 干支年次除以10、12余数表
干支年次(TB)R10R12
111
222
333
444
555
666
777
888
999
10010
11111
1220
1331
1442
1553
1664
1775
1886
1997
2008
2119
22210
23311
2440
2551
2662
2773
2884
2995
3006
3117
3228
3339
34410
35511
3660
3771
3882
3993
4004
4115
4226
4337
4448
4559
46610
47711
4880
4991
5002
5113
5224
5335
5446
5557
5668
5779
58810
59911
6000

(2)思路来源

在文章用列表法分析1500年前南北朝时期的“奥数”题(以下简称《列表法》)中,给出了用列表法推算《孙子算经》“物不知数”3、5、7三个数乘率的方法。这样对于每一组余数,就可以根据公式计算出相对应的那个被除数。

那么同理,能不能也找出10、12的乘率K10、K12,确定一个公式,由一组干支的序号也可以快速推算出干支年次,然后计算出相应的公元年呢?

(3)K12的确定

我们还用列表法尝试一下,从表5中,搜索当R10为0的情况,如表6所示。

表6 R10=0时R12对应干支年次表
干支年次(TB)R10R12
10010
2008
3006
4004
5002
6000

从表中可以看到,,但R10=0时R12只有6个,从10依次递减2,而R12本身应该有12个,为什么会少了一半呢?看表5,对于任意一个天干年次TB,其对应的R10和R12要么都是奇数,要么都是偶数,没有奇数和偶数的组合,当R10固定时,R12变化的幅度最小是2。

也就是说,要想让R12实现变化步幅是1,那么R10也需要变换1步,这样才能实现奇数对奇数、偶数对偶数的搭配。

实现这个目的的最简单的方法就是R10增加1,同时R12也增加1,但这种变化在R10、R12都小于10时R10-R12=0,当超过9之后,R10-R12=2,当超过19以后,R10-R12=4,差值发生了跳变,不是连续的,所以这个规律不适用。

那么实现R10、R12奇数对奇数、偶数对偶数的方法还有一种,就是一个增加1步,一个减少1步,相对运动是2步,那么也可以实现奇数对奇数、偶数对偶数的目的。

那么哪个余数增加,哪个余数减少呢?从表6中可以看出,随着干支年次的增加,R12的余数是递减的,也就是逆增长,所以确定这个余数是减少的。那么根据 《列表法》给出的爬爬虫定律1,先找到除数12的余数0在第6行,反向移动,找到它上边的2在第5行,第6行干支年次是60,第5行干支年次是50,又因为步伐是2,所以R12的乘率K12=(50-60)/2=-5

(3)K10的确定

因为确定除R12是减1变化,那么R10就是加1变化。再从表5中,搜索当除数R12=0的情况,如表7所示。从表中可以看到,搜出5行,从第1行到第4行,R10从2依次递增到8,而0在最后一行,说明0之后的那个2在下一个周期的第一行,也就是对应的干支年次为12+60=72。所以R10的乘率K10=(72-60)÷2=6

表7 R12=0时R10对应干支年次表
干支年次(TB)R10R12
1220
2440
3660
4880
6000

(4)干支年次计算公式

根据以上计算出的乘率,我们能确定根据干支来计算干支年次的公式为:

TB=6*R10-5*R12±n*60     式(3)

注意:公式中,R10代表干支年次除10的余数,R12代表干支年次除12的余数,n代表计算的结果加上或减去n倍60,直到计算结果在[1,60]为止。由于R12是减1变化,所以可能出现计算结果小于0的情况。

(5)验证公式

我们把所有的1到60除10、除12对应的所有余数,代入公式(3)来计算一下结果。

验证结果如表8所示,当n=0时的计算结果都在(-60,60)之间,所以只需要把小于1的再加一次60就能把全部结果换算至[1,60]之间,见AD(n=1)列,所有计算结果与干支年次完全一致,这就验证了公式的正确性。

表8 验证结果表
干支年次R10R12TB(n=0)TB(n=1)
11111
22222
33333
44444
55555
66666
77777
88888
99999
10010-5010
11111-4911
12201212
13311313
14421414
15531515
16641616
17751717
18861818
19971919
2008-4020
2119-3921
22210-3822
23311-3723
24402424
25512525
26622626
27732727
28842828
29952929
3006-3030
3117-2931
3228-2832
3339-2733
34410-2634
35511-2535
36603636
37713737
38823838
39933939
4004-2040
4115-1941
4226-1842
4337-1743
4448-1644
4559-1545
46610-1446
47711-1347
48804848
49914949
5002-1050
5113-951
5224-852
5335-753
5446-654
5557-555
5668-456
5779-357
58810-258
59911-159
6000060

(6)干支年变换公元年

那么有了一个周期内的计算公式,就可以根据干支计算出所有的公元年份了,计算公式为:

AD=TB+3+m*60                式(4) 

式中,AD代表公元年,TB代表计算出的一周期内的干支年,R10代表天干所对应序号,R12代表地支所对应序号,注意R10可以等于0,也可以等于10,R12可以等于0,也可以等于12,不影响计算结果。

举例验证:以“壬寅”年为例,反推。查表1可知,R10=9;查表2可知,R12=3;代入公式(3),得:

TB=6*9-5*3=54-15=39年

那么再代入公式(4)依次加60,可计算出至2022年所有的壬寅年,如表9所示。

表9 壬寅年对应的公元年
n公元年
042
2162
3222
4282
5342
6402
7462
8522
9582
10642
11702
12762
13822
14882
15942
161002
171062
181122
191182
201242
211302
221362
231422
241482
251542
261602
271662
281722
291782
301842
311902
321962
332022

 把表9与上图查到的资料对比,验证了结果完全正确,说明本文的变换公式

TB=6*R10-5*R12±n*60     式(3)

AD=TB+3+m*60                式(4) 

正确,变换方法可行。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号