復活節的計算

復活節的計算（computus，本詞即「計算」之意），是指對基督教重要節日復活節的日期算定方式，拉丁語全名為「computus paschalis」，東正教會則以「paschalion」稱之。其規則是復活節定於春分後第一次滿月之後的第一個星期日：這裡所說的「春分」是以3月21日作為固定近似值；而「第一次滿月」的日期並不完全依照實際天文現象、也不完全依照曆法，而是由教會使用特定數學公式推算。此使復活節成為教會年曆中的「移動慶日」，而有別於聖誕節等每年日期不變的「固定慶日」。

基督教發展初期，各地教會對復活節的日期已有爭議，但大致依希伯來曆以猶太人的逾越節推算；為了解決此爭議，同時擺脫對希伯來曆的依賴，西曆325年召開的第一次尼西亞公會議決定另採機制來計算復活節的日期。這套演算法之所以如此複雜，是因為教會希望將復活節的日期與逾越節相連結——基督徒相信，耶穌正是在逾越節期間受難死亡並在三日後復活的。

由於歷史上數次的教會分裂，實際上復活節日期的計算，會隨著基督教各宗派採用的曆法而有所不同，東方教會主要依儒略曆、西方教會則主要依格里曆。格里曆的出現，便是因為採用儒略曆計算的春分日期愈來愈偏離3月21日，導致復活節的計算出現問題而改革制定的。

## 歷史

復活節定於何日的問題，自2世紀的初期教會就已出現。當時有兩個紀念耶穌復活的日期：以小亞細亞教會為主的東方教會，遵循耶穌的使徒的遺傳，在猶太人的逾越節、即希伯來曆尼散月十四日，紀念耶穌的受難和復活，表明逾越節羔羊預表耶穌（哥林多前書5:7）。至於以羅馬教會為代表的西方教會，就在逾越節後的星期日紀念耶穌的復活。這項分歧引致教會間很大紛爭。

後來在325年召開的第一次尼西亞公會議上，教會決定不按希伯來曆法，而按照春分月圓，自行計算出復活節日期（但是所謂「春分」是固定於西曆3月21日）。此後教會為了定出從西曆計算月亮周期的方法，不依賴於天文觀察，各地先後提出多種方法，歷時數個世紀，才定出各地教會共用的計算表冊和方法。即使以天主教會為首的西方教會陸續改採格里曆，大部分東方教會續用儒略曆，復活節的日期仍然不完全依照曆法制定。

## 理論

由於希伯來曆是陰陽合曆，教會捨棄依從希伯來曆的傳統時，便造出自己的陰曆取代。每29或30日合為一個陰曆月（如果包含2月29日則有31日），在3月結束的陰曆月有30日，在4月結束者有29日，如此長短相間。12個陰曆月比陽曆年短11日，兩者的差距稱為閏餘（epact），陽曆日期加上閏餘得出陰曆月的日期。閏餘每年增加11日，達到30日或以上則減去30，設一個30日的閏月。每19年的默冬週期應剛好等於235個陰曆月，閏餘應以19年為一週期，但是19年的閏餘累積為29日，於是在儒略曆中將最後一年7月1日開始的陰曆月由本來30日減去1日，又在19年中加入7個各30日的閏月，分別開始於在第2年12月3日，第5年9月2日，第8年3月6日，第10年12月4日，第13年11月2日，第16年8月2日，第19年3月5日。一年在默冬週期中的位置稱為黃金數，算式是年份除以19的餘數加1。陰曆月第14日定為形式上的望日。望日在3月21日或之後的第一個陰曆月是復活節月，復活節是此陰曆月第14日之後第一個週日。

## 表列法

### 格里曆

由於1582年格里曆改革主要原因，在於當時的復活節計算法已遠離真正的春分和滿月，在推出新曆法時也推行了新的復活節計算法。將全年365日列出，再用遞減的羅馬數字標記各日，1月1日標記為「*」（0或30），1月2日為「xxix」（29），直到「i」，然後再重複至年末，但每偶數週期只有29日，需將標記為「xxv」的日子也標為「xxiv」。最後每個30日週期中將標記為「xxv」的日子加上標記「25」，每個29日週期中將標為「xxvi」的日子加上標記「25」。然後用「A」至「G」為每日標記，一年第一個週日的字母是這年的主日字母，例如如果1月5日是星期日，這年的主日字母是「E」，但是閏年有兩個主日字母，第一個是1至2月，第二個（提前一字母）是3月以後。每個陰曆月的朔日是和閏餘相同的羅馬數字日子。然而，由於默冬週期中，相隔11年的兩個年份閏餘相差1日，如果這兩年閏餘分別是24和25，那麼這兩年的朔日都會一樣，顯得不太優美，因此黃金數大於11而閏餘是25的年份，朔日改在標記為「25」的日子。格里曆每400年減去3個閏年，但是為免影響默冬週期，因此這三年將閏餘減1以修正（solar equation，equation按古代意思解作修正差異）；不過，19個未改正的儒略年比235個朔望月略長，每310年差距累積到一日，故此每2500（格里）年中，須8次將閏餘加1以修正（lunar equation），修正在世紀年進行，每兩次修正相隔300年，但每8次修正後隔400年再開始，第一次在1800年，下一次在2100年。這兩種修正有時互相抵消，如1800年和2100年即是。格里曆改革後黃金數方法被閏餘方法取代，但可以編制出兩者關係的簡化表格，有效期由一至三個世紀不等。以下的閏餘表對1900年至2199年適用。黃金數的演算法為年份除以19的餘數再加1，如2014年除以19的餘數為0，故此2014黃金數是1。

黃金數｜1｜2｜3｜4｜5｜6｜7｜8｜9｜10｜11｜12｜13｜14｜15｜16｜17｜18｜19

閏餘｜29｜10｜21｜2｜13｜24｜5｜16｜27｜8｜19｜、｜11｜22｜3｜14｜25｜6｜17

標記｜3月｜主日字母｜4月｜主日字母

-｜1｜D

xxix｜2｜E｜1｜G

xxviii｜3｜F｜2｜A

xxvii｜4｜G｜3｜B

xxvi｜5｜A｜4｜C

25｜6｜B

xxv｜5｜D

xxiv｜7｜C

xxiii｜8｜D｜6｜E

xxii｜9｜E｜7｜F

xxi｜10｜F｜8｜G

xx｜11｜G｜9｜A

xix｜12｜A｜10｜B

xviii｜13｜B｜11｜C

xvii｜14｜C｜12｜D

xvi｜15｜D｜13｜E

xv｜16｜E｜14｜F

xiv｜17｜F｜15｜G

xiii｜18｜G｜16｜A

xii｜19｜A｜17｜B

xi｜20｜B｜18｜C

x｜21｜C｜19｜D

ix｜22｜D｜20｜E

viii｜23｜E｜21｜F

vii｜24｜F｜22｜G

vi｜25｜G｜23｜A

v｜26｜A｜24｜B

iv｜27｜B｜25｜C

iii｜28｜C｜26｜D

ii｜29｜D｜27｜E

i｜30｜E｜28｜F

-｜31｜F｜29｜G

xxix｜30｜A

舉例：2019年黃金數是6，閏餘是24，則標記為「xxiv」日子是朔日，3月7日和4月5日為朔日，而望日為朔日的13日後，即3月20日和4月18日。3月21日或之後的望日是4月18日。這一日之後（不包括當日）的週日是復活節。2019年的主日字母是「F」，所以4月21日是復活節。

第偶數個陰曆月只有29日，有一日需有兩個閏餘標記，而選擇移動「xxv/25」的理由可能是：在閏餘為24的年份，如果3月7日開始的陰曆月有30日，復活節月便在4月6日開始，望日在4月19日，又假設該日是週日，復活節便在下週日4月26日。但是教會規定復活節不晚於4月25日，所以4月5日便有兩個標記「xxv」「xxiv」。因此格里曆中復活節最多出現在4月19日，約3.87%，最少出現在3月22日，約0.48%。

### 儒略曆

格里曆改革前西方教會使用的方法，也是東方正教會現今使用的方法，採用未改正的默冬週期，每週期開始閏餘都是0日，因此復活節望日只可能有19個。因為儒略曆不作出像格里曆的改正，每過一千年，教會陰曆的望日日期會比實際的望日推遲三日多，故此現時約有一半東正教的復活節比西方教會晚了一週。又由於儒略曆在1900年至2099年間比格里曆落後13日，格里曆的復活節望日不時在儒略曆3月21日之前，使東正教的復活節比西方教會晚了四至五週。

各地教會從4世紀開始漸漸採用此方法，931年最後一個英格蘭修道院也採用。在採用此方法前各地用其他方法定出復活節日期，相差可以達至五週。

下表是自從931年起儒略曆的復活節望日日期：

黃金數｜1｜2｜3｜4｜5｜6｜7｜8｜9｜10｜11｜12｜13｜14｜15｜16｜17｜18｜19

復活節望日｜4月5日｜3月25日｜4月13日｜4月2日｜3月22日｜4月10日｜3月30日｜4月18日｜4月7日｜3月27日｜4月15日｜4月4日｜3月24日｜4月12日｜4月1日｜3月21日｜4月9日｜3月29日｜4月17日

例子：1573年的黃金數是16，查表得到復活節望日是3月21日。從星期表得到該日是週六，因此復活節是其後的週日3月22日。

## 演演算法

### 高斯演演算法

這個方法由以數學家高斯命名。

用Y表示年份，mod運算指整數除法的餘數（例如13 mod 5 = 3，詳細請參見同餘）。

東正教會所用的儒略曆取M=15,N=6，西方教會所用的公曆的取法參見下表：

```
  年份      ''M''   ''N''
1583-1699  22   2
1700-1799  23   3
1800-1899  23   4
1900-2099  24   5
2100-2199  24   6
2200-2299  25   0
```

- a = Y mod 19
- b = Y mod 4
- c = Y mod 7
- d = (19a + M) mod 30
- e = (2b + 4c + 6d + N) mod 7

若d+e < 10則復活節在3月(d+e+22)日，反則在4月(d+e-9)日，除了兩個特殊情況：

- 若公式算出的日期是4月26日，復活節在4月19日。
- 若公式算出的日期是4月25日，同時d=28、e=6和a>10，復活節應在4月18日。

### Meeus/Jones/Butcher演演算法（公曆）

Jean Meeus在他的書《天文演演算法》（Astronomical Algorithms，1991年）記載了這個計算公曆中的復活節日期的方法，並指這個方法是來自Spencer Jones的書《一般天文學》（General Astronomy，1922年）和《英國天文學會期刊》（Journal of the Brithish Astronomical Association，1977年），後者指方法是來自Butcher's Ecclesiastical Calendar（1876年）。

這個方法的優點是不用任何表也沒有例外的情況。注意這裡用的是整數除法，7/2=3非3.5。

Worked ExampleYear(Y) = 1961｜Worked ExampleYear(Y) = 2000

a = Y mod 19｜1961 mod 19 = 4｜2000 mod 19 = 5

b = Y / 100｜1961 / 100 = 19｜2000 / 100 = 20

c = Y mod 100｜1961 mod 100 = 61｜2000 mod 100 = 0

d = b / 4｜19 / 4 = 4｜20 / 4 = 5

e = b mod 4｜19 mod 4 = 3｜20 mod 4 = 0

f = (b + 8) / 25｜(19 + 8) / 25 = 1｜(20 + 8) / 25 = 1

g = (b - f + 1) / 3｜(19 - 1 + 1) / 3 = 6｜(20 - 1 + 1) / 3 = 6

h = (19、a + b - d - g + 15) mod 30｜(19、4 + 19 - 4 - 6 + 15) mod 30 = 10｜(19、5 + 20 - 5 - 6 + 15) mod 30 = 29

i = c / 4｜61 / 4 = 15｜0 / 4 = 0

k = c mod 4｜61 mod 4 = 1｜0 mod 4 = 0

l = (32 + 2、e + 2、i - h - k) mod 7｜(32 + 2、3 + 2、15 - 10 - 1) mod 7 = 1｜(32 + 2、0 + 2、0 - 29 - 0) mod 7 = 3

m = (a + 11、h + 22、l) / 451｜(4 + 11、10 + 22、1) / 451 = 0｜(5 + 11、29 + 22、3) / 451 = 0

month = (h + l - 7、m + 114) / 31｜(10 + 1 - 7、0 + 114) / 31 = 4 (April)｜(29 + 3 - 7、0 + 114) / 31 = 4 (April)

day = ((h + l - 7、m + 114) mod 31) + 1｜(10 + 1 - 7、0 + 114) mod 31 + 1 = 2｜(29 + 3 - 7、0 + 114) mod 31 + 1 = 23

1961年4月2日｜2000年4月23日

### Meeus演演算法（儒略曆）

在《天文演演算法》，使用了以下公式計算儒略曆中的復活節日期：（注意這裡用的是整數除法，7/2=3非3.5。）

- a = Y mod 4
- b = Y mod 7
- c = Y mod 19
- d = (19*c + 15) mod 30
- e = (2*a + 4*b - d + 34) mod 7
- 月 = (d+e+114) / 31
- 日 = ((d+e+114) mod 31) + 1