兩千年前的數學

史記卷26 曆書

現代人有iPhone,按一下,日曆月曆年曆都有了,兩、三千年前,人類靠什麼來計算時間、日子?另有個有趣的問題?一個一歲的小孩需要知道今天是幾年幾月幾日嗎?答案顯然是否定的。那麼?為什麼成年人會需要知道年月日?這種種疑問,可能大多數人都沒有過,或者可能在好奇心強的孩提時有過問號,但很快地就被明天的考試淹沒了。人失去了好奇心,是件很可惜的事情。

幸好,兩千年前有位名為司馬遷的好奇寶寶,上自天文下至地理,經濟政治,他都懷抱著無所不奇的童玩之心。因而在其五十萬字著作「史記」中留下了一篇「曆書」,記載了當時的人如何記年算月,可惜只有千餘字。「曆書」後所附的曆書甲子篇,詳列了七十六年一迴圈的古代曆法,雖為後人加入,但應距司馬遷年代不遠,由這個曆法,可以瞭解到兩千年前的人類已經十分進步了,因而,史記曆書的記錄,彌足珍貴。

曆書甲子篇所記的就是我們今天的農曆,也就是我們小時候最喜歡的過年,可以放鞭炮、領壓歲錢的年所遵循的農曆。同時,也記下了陽曆丶也就是現在世界通行的西曆。記錄是用數學「餘數」的方式,分別以「大餘」、「小餘」記下農曆丶陽曆,因而,也成了兩者的對比。以下就是其理論分析。

這個一年一年的計算是由最基本的為一陽曆年有365又1/4日及一農曆年有12又7/19個月起算(詳見黃武雄著「中國數學史簡說」一文)。曆書甲子篇大餘、小餘的計算如下。

一陽曆年有365又1/4日起算,76年迴圈一次,稱為一蔀(音部),所以:

一蔀(音部)有76年。

一蔀(音部)有27759日。

76年 X 365 1/4日/年 = 27759日。

76年分四章,每章19年有七個閏月,所以:

一蔀(音部)有28個閏月。

4 章/蔀 x 7 個閏月/章 = 28 個閏月 / 蔀。

一蔀(音部)總共有940個月。

( 76 年 x 12 個月 / 年 ) + 28個個閏月 / 蔀 = 940個月。

一蔀(音部)有27759日一蔀(音部)總共有940個月。所以:

76年迴圈的每個月有29又 499 / 940天。

27759日 / 940個月 = 29又 499 / 940天。

每十二個月,共有354 又 348 / 940 天。一農曆年是 354 又 348 / 940 天。

12個月 x 29又 499 / 940天 = 354 又 348 / 940 天。

經由以上基本資料,「曆書甲子篇」使用「大餘」、「小餘」記錄了每一個農曆年及陽曆年,先簡略說明史記卷26、曆書中的「曆書甲子篇」開始幾句:「十二無大餘,無小餘;無大餘,無小餘;焉逢攝提格太初元年。」:

第一句「十二」表示這一年有12個月,並非閏年的13個月

第二句「無大餘,無小餘;」是記錄農曆

第三句「無大餘,無小餘;」是記錄陽曆

第四句「焉逢攝提格太初元年」講的是年份,焉逢攝提格是甲寅年,太初元年是漢武帝太初元年(元封七年,西元前104年),這是曆書甲子篇開始的時候,也是漢武帝重整曆法之時。

「曆書甲子篇」記錄農曆年及陽曆年很直覺,基本上,陽曆就是每年加365又1 /4天,農曆每年加 354 又 348/940 天。

陽曆每年加365又1 /4天,再將整數部份除以60後的餘數放在「大餘」; 分數部份,分母擴分為32,將分子放在「小餘」(例如1 /4擴分為8 / 32,8放在「小餘」)。

農曆每年加 354 又 348/940 天,再將整數部份除以60後的餘數放在「大餘」;分數部份,分子除以 940 放在「小餘」(例如 348 / 940, 348 放在「小餘」)。接下來是經由「曆書甲子篇」前四年的「大餘」、「小餘」而推演出公式,並列出和「曆書甲子篇」完全一致的「76年一迴圈」的「大餘」、「小餘」。複雜的部份是處理閏月丶閏年。

以下是先比對試算「曆書甲子篇」前四年的大餘、小餘後,再寫出公式並列出76年一迴圈的大餘、小餘。

(第1年)史記卷26、曆書中的曆書甲子篇,原文有:

十二

無大餘,無小餘;

無大餘,無小餘;

焉逢攝提格太初元年。

這一段是講太初元年(元封七年,西元前104年)起算,所以這一年有十二個月,第二句「無大餘,無小餘」表示計算農曆的大餘、小餘都沒有;第三句「無大餘,無小餘」表示計算陽曆的大餘、小餘也沒有。

(第2年)史記卷26、曆書中的曆書甲子篇,原文有:

十二

大餘五十四,小餘三百四十八;

大餘五,小餘八;

端蒙單閼(音餓)二年。

過了一年,因為這一年並非閏月(見19年閏月年的第2年或見76年閏月年的第2年),所以這一年有十二個月。

算算農曆的「大餘」、「小餘」:去年大餘是0小餘也是0,加上一農曆年有354 又 348 / 940 天,成為354 又 348 / 940。

先看大餘,354去掉300 (60的整數倍),剩54,這是大餘五十四。

再看小餘, 348 / 940 天中的348就是小餘三百四十八。

所以,(第2年)農曆是大餘五十四,小餘三百四十八;

算算陽曆的「大餘」、「小餘」:去年大餘是0小餘也是0,加上一陽曆年為365又1/4 天,成為365又1/4 天。

先看大餘, 365天去掉360(60的整數倍),剩5,這是大餘五。

再看小餘, 365又1/4日也可寫為365又8 / 32日,8 / 32日中的8就是小餘八。

所以,(第2年)陽曆是大餘五,小餘八;

(第3年)史記卷26、曆書中的曆書甲子篇,原文有:

閏十三

大餘四十八,小餘六百九十六;

大餘十,小餘十六;

游兆執徐三年。

又過了一年,因為這一年是閏月年(見19年閏月年的第3年或見76年閏月年的第3年),所以這一年有十三個月。

農曆:

由(第2年)大餘五十四,54+354 =408,408去掉60的整數倍),剩 48;得出今年大餘四十八。由(第2年)小餘三百四十八,348 + 348 = 696;得出今年小餘六百九十六。

陽曆:

由(第2年)大餘五,5+5= 10;得出今年大餘十。由(第2年)小餘八,8 + 8 = 16;得出今年小餘十六。

(第4年)史記卷26、曆書中的曆書甲子篇,原文有:十二大餘十二,小餘六百三;大餘十五,小餘二十四;彊梧大荒落四年。

十二

大餘十二,小餘六百三;

大餘十五,小餘二十四;

彊梧大荒落四年。

農曆:

上一年(第3年)大餘四十八,因為去年農曆為閏年,所以除了加354 又 348 / 940天外,需多加一個月 29又 499/940天。以去年的「大餘四十八,小餘六百九十六」轉化成數學式48又 696/940,將三者48又 696/940丶354 又 348 / 940丶29又 499/940相加,成為431又1543/940,也就是432又603/940。而且(去年小餘696 + 348 + 499 後超過 940 ),所以,432去掉60的整數倍,剩 12;得出今年大餘十二。由603/940;得出今年小餘六百三。

陽曆:

由上一年(第3年)大餘十,10+5= 15;得出今年大餘十五。由上一年(第3年)小餘十六,16 + 8 = 24;得出今年小餘二十四(若此數字成為32,則需進位,也就是大餘加1,並將小餘歸0)。

 

(第5年以後) 史記卷26、曆書中的曆書甲子篇均有原文,不再詳列,先列出「計算農曆的大餘、小餘公式」和「計算陽曆的大餘、小餘公式」,再用excel依此公式製作了一個76年的大餘小餘表,如下。

計算農曆的大餘、小餘公式:

大餘:

如果 ( 前一年為閏年 )

則:

如果 ( 去年小餘 + 348 + 499 後超過 940 )

則今年大餘 = ( 1+ 去年大餘 + 354 + 29 ) mod 60 「mod 60意思為除以60後的餘數」

否則今年大餘 = ( 去年大餘 + 354 + 29 ) mod 60 「mod 60意思為除以60後的餘數」

否則:

如果 ( 去年小餘 + 348 後超過 940 )

則:

今年大餘 = ( 1 + 去年大餘 + 354 ) mod 60 「mod 60意思為除以60後的餘數」

否則:

今年大餘 = ( 去年大餘 + 354 ) mod 60 「mod 60意思為除以60後的餘數」

小餘:

如果 ( 今年為閏年 )

則:

今年小餘 = ( 去年小餘 + 348 + 499 ) mod 940 「mod 940 意思為除以940 後的餘數」

否則:

今年小餘 = ( 去年小餘 + 348 ) mod 940 「mod 940 意思為除以940 後的餘數」

計算陽曆的大餘、小餘公式:

大餘:

如果 ( ( 前一年小餘 + 8 ) mod 32 為 0 ) 「mod 32 意思為除以 32 後的餘數」

則:

今年大餘 = ( 1+ 去年大餘 + 5 ) mod 60 「mod 60意思為除以60後的餘數」

否則:

今年大餘 = ( 去年大餘 + 5 ) mod 60 「mod 60意思為除以60後的餘數」

小餘:

今年小餘 = ( 去年小餘 + 8 ) mod 32 「mod 32 意思為除以 32 後的餘數」

用excel依上二組公式製作的一個76年的大餘小餘表:

這個表中大餘小餘數字和史記卷26、曆書中曆書甲子篇所記完全相同,黃色表示該年有閏月,現代有excel,兩千年前沒有這種工具,依「周髀(音比或避)算經」所言,古代有算籌(可用股溝搜「算籌」),但也令人很吃驚了。

注意,在76年的下一年77年,其實大餘小餘並未歸零,事實上需1520年,也就是20個76年大餘小餘才會歸零,詳見農曆丶陽曆1520年重合一次

「表二」

年份

農曆的年月計算

陽曆的日及時辰

閏月年

大餘

小餘

大餘

小餘
1
0
0
0
0
2
54
348
5
8
3
48
696
10
16
4
12
603
15
24
5
7
11
21
0
6
1
359
26
8
7
25
266
31
16
8
19
614
36
24
9
14
22
42
0
10
37
869
47
8
11
32
277
52
16
12
56
184
57
24
13
50
532
3
0
14
44
880
8
8
15
8
787
13
16
16
3
195
18
24
17
57
543
24
0
18
21
450
29
8
19
15
798
34
16
20
39
705
39
24
21
34
113
45
0
22
28
461
50
8
23
52
368
55
16
24
46
716
0
24
25
41
124
6
0
26
5
31
11
8
27
59
379
16
16
28
53
727
21
24
29
17
634
27
0
30
12
42
32
8
31
35
889
37
16
32
30
297
42
24
33
24
645
48
0
34
48
552
53
8
35
42
900
58
16
36
37
308
3
24
37
1
215
9
0
38
55
563
14
8
39
19
470
19
16
40
13
818
24
24
41
8
226
30
0
42
32
133
35
8
43
26
481
40
16
44
20
829
45
24
45
44
736
51
0
46
39
144
56
8
47
33
492
1
16
48
57
399
6
24
49
51
747
12
0
50
15
654
17
8
51
10
62
22
16
52
4
410
27
24
53
28
317
33
0
54
22
665
38
8
55
17
73
43
16
56
40
920
48
24
57
35
328
54
0
58
59
235
59
8
59
53
583
4
16
60
47
931
9
24
61
11
838
15
0
62
6
246
20
8
63
0
594
25
16
64
24
501
30
24
65
18
849
36
0
66
13
257
41
8
67
37
164
46
16
68
31
512
51
24
69
55
419
57
0
70
49
767
2
8
71
44
175
7
16
72
8
82
12
24
73
2
430
18
0
74
56
778
23
8
75
20
685
28
16
76
15
93
33
24

在以上的推演過程中用到了農曆「閏月閏年」,農曆「閏年」並非如陽曆般每四年一次地簡單,農曆「閏年」是19年7次的循環,在本文最後的「註一」及「註二」中分別列出「農曆閏年19年7次的循環及「農曆閏年76年28次的循環」。

以上就是兩千年前的曆法,使用了許多數學,可見「兩千年前的數學科學」早已經是中華文化基因的一部份。因為篇幅的關係,根據本文,推演出「農曆丶陽曆1520年重合一次」一文。

 

更多史記爆料,下回分解。

 

史記爆料目錄:三民新譯史記、目錄

 

「註一」 十九年7次農曆「閏年」的循環(參考黃武雄著「中國數學史簡說」一文,簡略摘要在這裡)。 參考「表一」:

理論基礎是:一年有365又1/4日(陽曆)而平均有12又7/19個月(農曆),365 1/4日除以 12又7/19個月 = 29又499/940日丶為一農曆月的天數。再用以下方法計算農曆閏月年。

每一年陽曆年365又1/4日比農曆年354又348/940日多出來10又827/940日,每年加10又827/940日後記在「表一」丶「陽曆減農曆一年後剩餘日數」那一欄。例如,第一年,為「整數日數」10及「尾數分數」827(「表一」1列),第二年為「整數日數」20及「尾數分數」1645(「表一」2列)。

「尾數分數」相加後若超過940,表示多了一天,要進位,讓「整數日數」多1丶同時「尾數分數」減940,記在「表一」丶「陽曆減農曆一年後剩餘日數(進位)」那一欄。例如,「表一」2列進位後的「整數日數進位」21及「尾數分數進位」714(「表一」2列)。

當「陽曆減農曆一年後剩餘日數(進位)」那一欄的「整數日數進位」及「尾數分數進位」)超過29又499/940時(例如「表一」3列,「整數日數進位」為32及「尾數分數進位」為601),則該年為閏月年(見第二欄「陽曆減農曆一年後剩餘日數(進位)」下各黃色部份,皆超過299又499/940,分別為第3、6、9、11、14、17、19年),下一年則進位至「陽曆減農曆一年後剩餘日數」那一欄,計算方式為:

將前一年的「整數日數進位」及尾數分數進位」減掉29又499/940 (一個農曆月的天數)。得出的結果記在最右欄「在農曆閏月年加入一個閏月29又499/940 日後剩餘」(例如「表一」3列的「在農曆閏月年加入一個閏月299又499/940 日後剩餘」欄,其下的「整數日數」為3及「尾數分數」為102)。

當產生閏月後,下一年的「陽曆減農曆一年後剩餘日數」那一欄的計算方式為(用「表一」3列作說明):

使用「表一」3列丶「在農曆閏月年加入一個閏月299又499/940 日後剩餘」欄的「整數日數」(3)及「尾數分數」(102),分別加10及827,得到13及929,這就是新的「整數日數」及「尾數分數」,成為「表一」4列丶「陽曆減農曆一年後剩餘日數」那一欄的「整數日數」13及「尾數分數」929。

依此針算19年,得出「農曆閏年19年迴圈表」如「表一」。黃色表示該年有閏月,19年後回到「在農曆閏月年加入一個閏月29又499/940 日後剩餘」欄的「整數日數」及「尾數分數」均為0。

「表一」

19年循環

陽曆減農曆一年後剩餘日數

陽曆減農曆一年後剩餘日數(進位)

在農曆閏月年加入一個閏月299又499/940日後剩餘

整数日数
尾数分数
整数日数進位
尾数分数進位
整数日数
尾数分数
閏月年
0
0
0
0
0
0
1
10
827
10
827
0
0
2
20
1654
21
714
0
0
3
31
1541
32
601
3
102
4
13
929
13
929
0
0
5
23
1756
24
816
0
0
6
34
1643
35
703
6
204
7
16
1031
17
91
0
0
8
27
918
27
918
0
0
9
37
1745
38
805
9
306
10
19
1133
20
193
0
0
11
30
1020
31
80
1
521
12
11
1348
12
408
0
0
13
22
1235
23
295
0
0
14
33
1122
34
182
4
623
15
14
1450
15
510
0
0
16
25
1337
26
397
0
0
17
36
1224
37
284
7
725
18
17
1552
18
612
0
0
19
28
1439
29
499
0
0

 

「註二」 76年7次農曆「閏年」的循環

計算法與十九年7次農曆「閏年」的循環同,依此得出76年28次農曆「閏年」循環表如下,黃色表示該年有閏月。

計算法與19年迴圈閏月年同,依此迴圈得出農曆閏年76年迴圈表如下(表三),黃色表示該年有閏月。注意19丶38丶57三年,「在農曆閏月年加入一個閏月29又499/940 日後剩餘」欄的「整數日數」及「尾數分數」均為0。

「 表三 」

年份
年份

陽曆減農曆一年後剩餘

陽曆減農曆一年後剩餘

在農曆閏月年加入一個閏月299又499/940日後剩餘

76年循環
19年循環
整数日数
尾数分数
整数日数進位
尾数分数進位
整数日数
尾数分数
閏月年
閏月年
0
0
0
0
0
0
1
1
10
827
10
827
0
0
2
2
20
1654
21
714
0
0
3
3
31
1541
32
601
3
102
4
4
13
929
13
929
0
0
5
5
23
1756
24
816
0
0
6
6
34
1643
35
703
6
204
7
7
16
1031
17
91
0
0
8
8
27
918
27
918
0
0
9
9
37
1745
38
805
9
306
10
10
19
1133
20
193
0
0
11
11
30
1020
31
80
1
521
12
12
11
1348
12
408
0
0
13
13
22
1235
23
295
0
0
14
14
33
1122
34
182
4
623
15
15
14
1450
15
510
0
0
16
16
25
1337
26
397
0
0
17
17
36
1224
37
284
7
725
18
18
17
1552
18
612
0
0
19
19
28
1439
29
499
0
0
20
1
10
827
10
827
0
0
21
2
20
1654
21
714
0
0
22
3
31
1541
32
601
3
102
23
4
13
929
13
929
0
0
24
5
23
1756
24
816
0
0
25
6
34
1643
35
703
6
204
26
7
16
1031
17
91
0
0
27
8
27
918
27
918
0
0
28
9
37
1745
38
805
9
306
29
10
19
1133
20
193
0
0
30
11
30
1020
31
80
1
521
31
12
11
1348
12
408
0
0
32
13
22
1235
23
295
0
0
33
14
33
1122
34
182
4
623
34
15
14
1450
15
510
0
0
35
16
25
1337
26
397
0
0
36
17
36
1224
37
284
7
725
37
18
17
1552
18
612
0
0
38
19
28
1439
29
499
0
0
39
1
10
827
10
827
0
0
40
2
20
1654
21
714
0
0
41
3
31
1541
32
601
3
102
42
4
13
929
13
929
0
0
43
5
23
1756
24
816
0
0
44
6
34
1643
35
703
6
204
45
7
16
1031
17
91
0
0
46
8
27
918
27
918
0
0
47
9
37
1745
38
805
9
306
48
10
19
1133
20
193
0
0
49
11
30
1020
31
80
1
521
50
12
11
1348
12
408
0
0
51
13
22
1235
23
295
0
0
52
14
33
1122
34
182
4
623
53
15
14
1450
15
510
0
0
54
16
25
1337
26
397
0
0
55
17
36
1224
37
284
7
725
56
18
17
1552
18
612
0
0
57
19
28
1439
29
499
0
0
58
1
10
827
10
827
0
0
59
2
20
1654
21
714
0
0
60
3
31
1541
32
601
3
102
61
4
13
929
13
929
0
0
62
5
23
1756
24
816
0
0
63
6
34
1643
35
703
6
204
64
7
16
1031
17
91
0
0
65
8
27
918
27
918
0
0
66
9
37
1745
38
805
9
306
67
10
19
1133
20
193
0
0
68
11
30
1020
31
80
1
521
69
12
11
1348
12
408
0
0
70
13
22
1235
23
295
0
0
71
14
33
1122
34
182
4
623
72
15
14
1450
15
510
0
0
73
16
25
1337
26
397
0
0
74
17
36
1224
37
284
7
725
75
18
17
1552
18
612
0
0
76
19
28
1439
29
499
0
0

「註三」黃武雄著「中國數學史簡說」一文,簡略摘要在此:

在閱讀曆書甲子篇最不易瞭解的是為何出現了每19年閏7個月一事,一年一年的計算是由最基本的為一陽曆年有365又1/4日及一農曆年有12又7/19個月起算,此事出自周髀(音比或避)算經,黃武雄著「中國數學史簡說」一文(前往其網頁)詳細說明,摘要如下:

「周髀(音比或避)算經」認為一年有365又1 /4日(陽曆)而平均有12又7/19個月(農曆),亦即每 19 年應有 7 個閏月。因而每個農曆月為29又499/940日。

365 1/4日除以 12又7/19個月 = 29又499/940日

月亮每個月所行平均度數為 13又7/19 度(一周以 365又1/4 度計算,這點有別於西方數學所採用的 360 度),求取 12 個月以後月亮所在的方位。那麼其問題便在於計算:

29又499/940日乘 13又7/19 度乘 12 除以 365又1/4 得到 12又17328/17860。此即月亮12個月後所在的方位。

17328/ 17860 乘 365又1/4 度= 354 又 6612/17860 , 6612/17860 約分後為348 /940,所以,一年有354 又 348 /940日。

兩千年前的數學(史記卷26、曆書):2010年07月26日星期一