はじめに
儀鳳暦(中国では麟徳暦)は一太陽年および一朔望月を定義する分数において,初めて共通分母を採用したとされる。
- 一太陽年=489428/1340=365.2448日
- 一朔望月=39571/1340=29.53060日
この共通分母1340の由来についてはまず下記の記事を参照されたい。
表1に隋唐時代の暦法を示すが,麟徳暦よりも前の暦法では分母がバラバラであるのに対し,麟徳暦以降の暦法はすべて共通分母制を踏襲していることが分かる。このことから筆者は共通分母には計算が楽になるなどの利便性があるのではないかと推察したが,果たして本当だろうか?本記事はその検証を行う。
暦名 | 選者 | 実施期間 | 一太陽年 | 一朔望月 | 上元積年 |
---|---|---|---|---|---|
開皇 | 張賓 | 594~596 (13年間) |
$\displaystyle\frac{25063}{102960}$ | $\displaystyle\frac{5372209}{181920}$ | 上元甲子至開皇四年甲辰 4129000年 |
皇極 | 劉焯 | 未実施 | $\displaystyle\frac{17036466.5}{46644}$ | $\displaystyle\frac{36677}{1242}$ | 上元甲子至仁寿四年甲子 1008840年 |
大業 | 張冑玄 | 597~618 (22年間) |
$\displaystyle\frac{15573963}{42640}$ | $\displaystyle\frac{33783}{1144}$ | 上元甲子至大業四年戊辰 1427644年 |
戊寅 | 傅仁均 | 619~664 (46年間) |
$\displaystyle\frac{3456675}{9464}$ | $\displaystyle\frac{384075}{13006}$ | 上元戊寅至武徳九年丙戌 164348年 |
麟徳 | 李淳風 | 665~728 (64年間) |
$\color{red}{\displaystyle\frac{489428}{1340}}$ | $\color{red}{\displaystyle\frac{39571}{1340}}$ | 上元甲子至麟徳元年甲子 269880年 |
大衍 | 僧一行 | 729~761 (33年間) |
$\displaystyle\frac{1110343}{3040}$ | $\displaystyle\frac{89773}{3040}$ | 上元甲子至開元十二年甲子 96961740年 |
五紀 | 郭獻之 | 762~783 (22年間) |
$\displaystyle\frac{489428}{1340}$ | $\displaystyle\frac{39571}{1340}$ | 上元甲子至宝応元年壬寅 269978年 |
正元 | 徐承嗣 楊景風 |
784~806 (23年間) |
$\displaystyle\frac{399943}{1095}$ | $\displaystyle\frac{32336}{1095}$ | 上元甲子至興元元年甲子 402900年 |
観象 | 徐昻 | 807~821 (15年間) |
不明 | 不明 | 不明 |
宣明 | 徐昻 | 822~892 (71年間) |
$\displaystyle\frac{3068055}{8400}$ | $\displaystyle\frac{248057}{8400}$ | 上元甲子至長慶二年壬寅 7070138年 |
崇玄 | 辺岡 | 893~938 (46年間) |
$\displaystyle\frac{4930801}{13500}$ | $\displaystyle\frac{398663}{13500}$ | 上元甲子至景福元年壬子 53947308年 |
試しに簡単な暦計算を行ってみる
参考文献[1]に従い,日本書紀の記述にある持統11年(AD697年)8月1日「八月乙丑朔」を計算してみる。儀鳳暦の基準年は麟徳1年(AD664年)の前年の11月1日(朔)甲子日から数えて上元(積年)269880年前の11月1日(朔)甲子日であり,午前0時が「冬至」になる。目的の前年の持統10年(AD696年)11月朔(1日)の積年を
\textsf{積年} = 269880 + (697 - 664) = 269913\,\textsf{年} \tag{0}
として持統10年(AD696年)11月朔の干支を求める。
\frac{269913}{80400} = 3 + \frac{28713}{80400} \tag{1}
\frac{28713 \times \color{red}{7028}}{80400} = 2509 + \frac{71364}{80400} \tag{2}
\frac{71364}{1,340} = 53 + \frac{344}{1340} \tag{3}
\frac{269913}{39571} = 6 + \frac{32487}{39571} \tag{4}
\frac{32487 \times \color{red}{14576}}{39571} = 11966 + \frac{23926}{39571} \tag{5}
\frac{23926}{1340} = 17 + \frac{1146}{1340} \tag{6}
となるので,AD696年11月朔は各々余りと商を引く,すなわち$(3) - (6)$ より
\begin{aligned}
\textsf{小余} &= 344 - 1146 + 1340 = 538 \\
\textsf{大余} &= 53 - 17 - 1 = 35\textsf{(己亥)}
\end{aligned} \tag{7}
となる。AD696年12月朔は前月11月朔に一朔望月の余りと商を加える。
\begin{aligned}
\textsf{小余} &= 538 + 711 = 1249 \\
\textsf{大余} &= 35 + 29 + 0 - 60 = 4\textsf{(戊辰)}
\end{aligned} \tag{8}
これをくり返した翌AD670年8月朔干支は,
\begin{aligned}
\textsf{小余} &= 1249 + (711 \times 8) - 1340 \times 5 = 237 \\
\textsf{大余} &= 4 + (29 \times 8) + 5 - 60 \times 4 = 1\textsf{(乙丑)}
\end{aligned} \tag{9}
となり,持統11年(AD697年)8月1日の干支も「乙丑」になって日本書紀の記述と一致するとのこと。
日 | 干支 | 日 | 干支 | 日 | 干支 | 日 | 干支 | 日 | 干支 | 日 | 干支 |
---|---|---|---|---|---|---|---|---|---|---|---|
00 | 甲子 | 10 | 甲戌 | 20 | 甲申 | 30 | 甲午 | 40 | 甲辰 | 50 | 甲寅 |
01 | 乙丑 | 11 | 乙亥 | 21 | 乙酉 | 31 | 乙未 | 41 | 乙巳 | 51 | 乙卯 |
02 | 丙寅 | 12 | 丙子 | 22 | 丙戌 | 32 | 丙申 | 42 | 丙午 | 52 | 丙辰 |
03 | 丁卯 | 13 | 丁丑 | 23 | 丁亥 | 33 | 丁酉 | 43 | 丁未 | 53 | 丁巳 |
04 | 戊辰 | 14 | 戊寅 | 24 | 戊子 | 34 | 戊戌 | 44 | 戊申 | 54 | 戊午 |
05 | 己巳 | 15 | 己卯 | 25 | 己丑 | 35 | 己亥 | 45 | 己酉 | 55 | 己未 |
06 | 庚午 | 16 | 庚辰 | 26 | 庚寅 | 36 | 庚子 | 46 | 庚戌 | 56 | 庚申 |
07 | 辛未 | 17 | 辛巳 | 27 | 辛卯 | 37 | 辛丑 | 47 | 辛亥 | 57 | 辛酉 |
08 | 壬申 | 18 | 壬午 | 28 | 壬辰 | 38 | 壬寅 | 48 | 壬子 | 58 | 壬戌 |
09 | 癸酉 | 19 | 癸未 | 29 | 癸巳 | 39 | 癸卯 | 49 | 癸丑 | 59 | 癸亥 |
積年の定義が今一つ不明瞭だ。儀鳳暦の基準年は麟徳1年(AD664年)の前年,すなわちAD663年の11月1日(朔)とし,目的の前年の持統10年(AD696年)11月朔の積年を求めるのであれば式 $(0)$ は
\textsf{積年} = 269880 + (696 - 663) = 269913\textsf{年} \tag{$0'$}
となりそうな気がするのだが,あくまで参考文献[1]の式に従っている。
自分なりの儀鳳暦の解釈
先ほどの計算を初見で理解できる人がいたら天才だと思う。
事前準備として剰余演算について整理する。剰余演算子を $\bmod$ とすると $a \times b$ を $p$ で割った余りは $a$ と $b$ をぞれぞれ $p$ で割った余り同士の積の余りに等しい。
(a \times b) \bmod p = \{(a \bmod p) \times (b \bmod p)\} \bmod p \tag{10}
わざわざ計算の手間を増やしただけに見えるが,手計算で行う場合は大きな意味がある。$p$ で割った余りは必ず $p$ より小さい数になるので小さい数同士の計算になるからだ。
先ほどの計算をトレースしてみよう。まず式 $(1),(2)$ について,マジックナンバー $80400$ の意味は分かり易い。$60\textsf{日} \times 1340\textsf{分/日} = 80400\textsf{分}$ という意味だ。
\begin{aligned}
&\{(269913\textsf{年} \bmod 80400\textsf{分}) \times \color{red}{7028\textsf{分/年}}\} \bmod 80400\textsf{分} \\
&= \{(269913\textsf{年} \bmod 80400\textsf{分}) \times (489428\textsf{分/年} \bmod 80400\textsf{分})\} \bmod 80400\textsf{分} \\
&= \color{blue}{(269913\textsf{年} \times 489428\textsf{分/年}) \bmod 80400\textsf{分}} \\
&= 132102979764\textsf{分} \bmod 80400\textsf{分} \\
&= \color{red}{71364\textsf{分}}
\end{aligned}
※青色の式を得るところで式 $(10)$ を使っている。
先ほど現れたマジックナンバー7028の出所が分かる。一年489428分を六十干支80400分で割った余りだ。すなわち,一年365.2448日を60日で割った余り5.2448日に相当する。こうして得られた71364分は積年269913年11月1日午前0時を六十干支位置で(一日当たり1340分の単位で)表したものだ。
次に式$(4),(5)$ についても示す。
\begin{aligned}
&\{(269913\textsf{年} \bmod 39571\textsf{分/月}) \times \color{red}{14576\textsf{分/年}}\} \bmod 39571\textsf{分/月} \\
&= \{(269913\textsf{年} \bmod 39571\textsf{分/月}) \times (489428\textsf{分/年} \bmod 39571\textsf{分/月}\} \bmod 39571\textsf{分/月} \\
&= \color{blue}{(269913\textsf{年} \times 489428\textsf{分/年}) \bmod 39571\textsf{分/月}} \\
&= 132102979764\textsf{分} \bmod 39571\textsf{分/月} \\
&= \color{red}{23926\textsf{分}}
\end{aligned}
※青色の式を得るところで式 $(10)$ を使っている。
同様にマジックナンバー14576の出所が分かった。一年489428分を一朔望月39571分で割った余りだ。すなわち一年365.2428日を一朔望月29.5036日で割った余り10.8776日に相当する。こうして得られた23926分は積年269913年11月1日午前0時を一朔望月位置で(一日当たり1340分の単位で)表したものだ。さらに,11月1日朔の一朔望月における位置を0にするため71364分から23926分を差し引く。この結果,持統11年11月1日午前0時を六十干支位置で(一日当たり1340分の単位で)表すと
71364-23926 = 47438\textsf{分} \tag{11}
となる。これより
\frac{47438\textsf{分}}{1340\textsf{分/日}} = 35\textsf{日} + \frac{538\textsf{分}}{1340\textsf{分/日}} \tag{12}
となる。表2より35日は「己亥」となる。
持統11年11月1日午前0時の六十干支位置47438分に対して,毎月39571分ずつ加えたものが①通算分である。①通算分を80400分で割った余りが②六十干支位置(単位は分)になる。②六十干支位置を1340分で割った商が六十干支の日数(表の赤色部分)となる。
年月日 | ①通算分 | ②六十干支位置 | 干支 |
---|---|---|---|
持統10年11月1日 | $47438$ | $47438/1340 = \color{red}{35} + \:\;538/1340$ | 己亥 |
持統10年12月1日 | $87009$ | $\:\;6609/1340 = \:\;\color{red}{4} + 1249/1340$ | 戊辰 |
持統11年01月1日 | $126580$ | $46180/1340 = \color{red}{34} + \:\;620/1340$ | 戊戌 |
持統11年02月1日 | $166151$ | $\:\;5351/1340 = \:\;\color{red}{3} + 1331/1340$ | 丁卯 |
持統11年03月1日 | $205722$ | $44922/1340 = \color{red}{33} + \:\;702/1340$ | 丁酉 |
持統11年04月1日 | $245293$ | $\:\;4093/1340 = \:\;\color{red}{3} + \:\;\:\;73/1340$ | 丁卯 |
持統11年05月1日 | $284864$ | $43664/1340 = \color{red}{32} + \:\;784/1340$ | 丙申 |
持統11年06月1日 | $324435$ | $\:\;2835/1340 = \:\;\color{red}{2} + \:\;155/1340$ | 丙寅 |
持統11年07月1日 | $364006$ | $42406/1340 = \color{red}{31} + \:\;866/1340$ | 乙未 |
持統11年08月1日 | $403577$ | $\:\;1577/1340 = \:\;\color{red}{1} + \:\;237/1340$ | 乙丑 |
比較のため元嘉暦で計算してみよう
元嘉暦は共通分母ではない。また一太陽年/一朔望月がメトン周期(235/19)を採用した章法である。
- 一太陽年=111035/304
- 一朔望月=22207/752
- 一太陽年/一朔望月=235/19
こちらも参考文献[1]に従い,日本書紀の記述にある持統11年(AD697年)8月1日「八月乙丑朔」を計算してみる。元嘉20年(AD443年)より積年5703年前が基準になり,持統11年(AD697年)までの積年は
\textsf{積年} = 5703 + (697 - 443) = 5957 \tag{20}
持統11年(AD697年)正月朔(一日)は
5957\textsf{年} \times \frac{235\textsf{月}}{19\textsf{年}} = 73678\textsf{月} + \frac{13}{19} \tag{21}
73678\textsf{月} \times \frac{22207\textsf{日}}{752\textsf{月}} = 2175754\textsf{日} + \frac{338}{752} \tag{22}
\frac{2175754\textsf{日}}{60\textsf{日}} = 36262 + \frac{\color{red}{34\textsf{日}}}{60\textsf{日}} \tag{23}
となるので正月朔(一日)の六十干支は34(戊戌)となる。
二月朔の六十干支日数を計算してみると
\begin{aligned}
34\textsf{日} + \frac{338}{752} + \frac{22207}{752} &= 34\textsf{日} + \frac{338}{752} + 29\textsf{日} + \frac{399}{752} \\
&= 63\textsf{日} + \frac{677}{752} \\
&= 60\textsf{日} + \color{red}{3\textsf{日}} + \frac{677}{752}
\end{aligned} \tag{24}
となり,3日(丁卯)を得られる。同様にして八月朔は
\begin{aligned}
34\textsf{日} + \frac{338}{752} + 7 \times \frac{22207}{752} &= 34\textsf{日} + \frac{338}{752} + 7 \left(29\textsf{日} + \frac{399}{752}\right) \\
&= 237\textsf{日} + \frac{3131}{752} \\
&= 241\textsf{日} + \frac{123}{752} \\
&= 4 \times 60\textsf{日} + \color{red}{1\textsf{日}} + \frac{123}{752}
\end{aligned} \tag{25}
となり,1日(乙丑)が得られた。
儀鳳暦に比べると元嘉暦の計算手順は遥かに分かり易いように思える。
自分なりの儀鳳暦の解釈その2
元嘉暦の計算手順に準じて,ただし定数は儀鳳暦のものを用いて計算してみよう。
\textsf{積年} = 269880 + (697 - 664) = 269913\textsf{年} \tag{30}
269913\textsf{年} \times \frac{489428\textsf{月}}{39571\textsf{年}} = 3338378\textsf{月} + \frac{23926}{39571} \tag{31}
3338378\textsf{月} \times \frac{39571\textsf{日}}{1340\textsf{月}} = 98584295\textsf{日} + \color{red}{\frac{538}{1340}} \tag{32}
\frac{98584295\textsf{日}}{60\textsf{日}} = 1643071 + \frac{\color{red}{35\textsf{日}}}{60\textsf{日}} \tag{33}
ということで計算の手順は前後しているが,式 $(12)$ と同じ結果を得られていることが分かる。すなわち,この計算手順でも正しく六十干支を計算できる。
式 $(31)$ は積年11月を上元からの通算月数に変換しているという意味である。式 $(31)$ の端数部分は閏月を決めるための情報を保持しているに過ぎないため,同一年内であれば端数部分を切り捨てて構わない。以下,通算月数の計算例を示すが,前年との通算月数の差分が13の年は閏月を設けることになる。
一方,式 $(32)$ は積年11月1日を上元からの通算日数に変換しているという意味である。こちらの端数には意味があり,大の月(30日)と小の月(29日)を決めるための情報を保持している。
積年 | 通算月数 | 差分 |
---|---|---|
269913 | 3338378 | |
269914 | 3338390 | 12 |
269915 | 3338403 | 13 |
269916 | 3338415 | 12 |
269917 | 3338428 | 13 |
269918 | 3338440 | 12 |
269919 | 3338452 | 12 |
269920 | 3338465 | 13 |
269921 | 3338477 | 12 |
269922 | 3338489 | 12 |
通算月数 | 通算日数 | 差分 |
---|---|---|
3338378 | 98584295 | |
3338379 | 98584324 | 29 |
3338380 | 98584354 | 30 |
3338381 | 98584383 | 29 |
3338382 | 98584413 | 30 |
3338383 | 98584443 | 30 |
3338384 | 98584472 | 29 |
3338385 | 98584502 | 30 |
3338386 | 98584531 | 29 |
3338387 | 98584561 | 30 |
まとめ
今回,六十干支の計算を通じて,共通分母を採用した儀鳳暦(麟徳暦)と共通分母ではない元嘉暦の双方を比較したが共通分母自体のメリットを見い出せなかった。
むしろ後年になるに従い,暦法で用いる定数は概ね桁数が増えていく傾向があり,手計算で行うのは大変煩雑であったことが推察される。
式 $(1) \sim (7)$ と式 $(31) \sim (33)$ は等価であるが,後者のほうが計算ステップ数も短く計算意図を理解しやすいはずだ。にも関わらず前者のほうが採用されたのは手計算で楽だったからと思われる。前者では最大五桁同士の乗算で済むが,後者では六桁同士あるいは七桁と五桁の乗算を行う必要があるからだ。
ただし,実際に六十干支計算を行ってみると六十干支自体は一日の単位であるにも関わらず儀鳳暦と元嘉暦のいずれの計算過程においても一日よりも短い時間単位で情報を保持する必要があった。儀鳳暦では1340,元嘉暦では752が該当する。この結果,計算過程で現れた分母が物理的な時間単位として認識されていき,やがて共通分母に繋がっていったのではないかと考える。
参考文献
[0] 内田正男,日本暦日原典第三版,雄山閣出版,1978年
[1] 神谷政行,天武天皇の年齢研究-元嘉暦と儀鳳暦 - biglobe