
終末ルール、終末アルゴリズム、または終末法は、特定の日付の曜日を決定するアルゴリズムです。グレゴリオ暦は400年の周期で動くため、これは永久カレンダーを提供します。暗算アルゴリズムは、1973年にジョン・コンウェイによって考案されました[ 1 ] [ 2 ]。ルイス・キャロルの永久カレンダーアルゴリズムから着想を得ています[ 3 ] [ 4 ] [ 5 ] 。このアルゴリズムは、各年に終末と呼ばれる覚えやすい特定の日付が特定の曜日に当たることを利用しています。たとえば、2月の最終日、4月4日(4/4)、6月6日(6/6)、8月8日(8/8)、10月10日(10/10)、12月12日(12/12)はすべて、その年の同じ曜日に当たります。
終末アルゴリズムの適用には、次の3つのステップが含まれます。まず、世紀の基準日を決定し、次に、世紀の基準日からその年の基準日を計算します。そして、終末日に必ず当たる日付(例えば4月4日と6月6日)の中から最も近い日付を選択し、その日付と問題の日付との間の日数(7を法とする)を数えて曜日を求めます。この手法はグレゴリオ暦とユリウス暦の両方に適用できますが、終末日は通常、異なる曜日になります。
このアルゴリズムは、暗算で計算できるほど単純です。コンウェイは通常、2秒以内に正解を出すことができました。計算速度を上げるため、彼はコンピューターで暦の計算を練習しました。コンピューターは、ログインするたびにランダムな日付でクイズを出題するようにプログラムされていました。[ 6 ]
グレゴリオ暦で今年(2026年)の終末日は土曜日です。ある年の終末日を見つける簡単な方法があります。
特定の日付が何曜日かは、近くの終末日を基準点として調べることができます。そのため、各月で必ず終末日に当たる、覚えやすい日付のリストを以下に示します。
2月の最終日は常に終末の日とされています。1月については、 平年では1月3日、 閏年では1月4日が終末の日とされており、「4年のうち3年目の3日と4年目の4日」と覚えることができます。3月については、円周率の日か「3月0日」のどちらかを覚えることができます。後者は3月1日の前日 、つまり2月の最終日を指します。
4月から12月までの偶数月は、4/4、6/6、8/8、10/10、12/12という2つの日付でカバーされ、これらはすべて終末の日になります。奇数月は「私は7-11で9時から5時まで働いています」という覚え方で覚えることができ、つまり9/5、7/11、5/9、11/7はすべて終末の日です(これは日/月と月/日のどちらの表記法にも当てはまります)。[ 8 ]
ジョン・コンウェイは次のように書いています。「要約:1月と2月は『最後』、それ以外の場合は偶数月はn番目、奇数月は(n ±4)番目」[ 1 ] 。 彼はさらに、「符号は、長い奇数月(31日)は+、短い奇数月(30日)は-である」と明確にしました。[ 1 ]
アメリカ合衆国の独立記念日、ボクシング・デー、ハロウィーン、バレンタインデーなど、平年の有名な祝日のいくつかは、毎年終末の日にも当たる。
特定の年の終末日は、3月から翌年2月までの期間の日付の曜日と直接関係しているため、同じ年の1月と2月については、平年と閏年を区別する必要がある。
2027年のクリスマスが何曜日になるかを調べるには、次の手順に従ってください。2027年は、終末の日が日曜日です。12月 12日は終末の日なので、その 13日後(2週間から1日引いた日)の12月25日は土曜日になります。クリスマスは常に終末の前の曜日です。さらに、7月 4日(アメリカ独立記念日)は常に終末の日と同じ曜日であり、ハロウィーン(10月 31日)、円周率の日(3月14日)、12月 26日(ボクシングデー)も同様です。
このアルゴリズムでは曜日を 7 を法とする数として扱うため、ジョン・コンウェイは曜日を「Noneday」または「Sansday」(日曜日)、「Oneday」、「Twosday」、「Treblesday」、「Foursday」、「Fiveday」、「Six-a-day」と考えることで、頭の中で数える必要なく曜日と数の関係を思い出せるように提案した。[ 11 ]
スラヴ語、中国語、エストニア語、ギリシャ語、ポルトガル語、ヘブライ語など、曜日の名前を位置順にしている言語がいくつかあります。スラヴ語、中国語、エストニア語は上記の表と一致していますが、その他の言語では日曜日を1日目としています。
まず、世紀の基準日を決めます。終末ルールの目的上、世紀は「00」で始まり「99」で終わります。次の表は、1600~1699年、1700~1799年、1800~1899年、1900~1999年、2000~2099年、2100~2199年、2200~2299年の世紀の基準日を示しています。
グレゴリオ暦の場合:
ユリウス暦の場合:
注記:。
次に、その年の基準日を見つけます。コンウェイによれば、それを実現するには次の手順が必要です。[ 12 ]
例えば、20世紀の1966年の場合:
上記箇条書き4で説明したように、これは以下と同等です。
つまり、1966年の世界の終末は月曜日に訪れたということだ。
同様に、2005年の世界の終末は月曜日である。

終末のアンカー日の計算は、基準年の任意の日付と現在の年の同じ日付の間の日数を計算し、7 で割った余りを取るというものです。両方の日付が閏日(ある場合)の後である場合、差は365 y + y / 4 (切り捨て)になります。しかし、365 は 52 × 7 + 1 に等しいので、余りを取ると、
yの大きな値を4 と 7 の両方で割ることに抵抗がなければ、より簡単な式が得られます。たとえば、次のように計算できます。
これは上記の例と同じ答えになります。
12 が登場するのは、ほぼ12年ごとに繰り返されます。12年後には、y をy mod 12に置き換えると、この余分な日を捨てることになりますが、この誤差を補正することで、最終的な式が得られます。
世紀のグレゴリオ暦の基準日を計算するには、3 つの「平年世紀」(それぞれ閏年が 24 年)の後に 1 つの「閏世紀」(閏年が 25 年)が続きます。平年世紀は終末の日を 1 日分進めます。
(2日前に相当する)日。閏世紀は終末の日を6日前倒しする(1日前に相当する)。
つまり、数世紀にわたって終末を早める
しかしこれは、
4世紀が終末を早める
つまり、4世紀という周期は終末の日を変えない(そのため、世紀の公式には「mod 4」という表現が使われる)。

2010年にチェンバレン・フォンとマイケル・K・ウォルターズによって、その年の基準日を見つけるためのより簡単な方法が発見された。[ 13 ] 「奇数+11」法と呼ばれるこの方法は、 [ 13 ]を計算することと同等である。
4(または12)で割る必要がないため、暗算に適しています。また、「奇数+11」というルールが繰り返し使われるため、手順も覚えやすいです。さらに、10進法では11による足し算は暗算で非常に簡単に行えます。
これを拡張して基準日を求める場合、その手順は、次の6つのステップで累計Tを累積していくものとして説明されることが多い。
例えば、この方法を2005年に適用すると、手順は以下のようになります。
この式は難解で複雑に見えますが、実際には単純です[ 13 ]。これは、一度だけ計算すればよい共通の部分式 y + 11( y mod 2) / 2 があるためです。
終末日を計算する別の方法は、2023年に中井博によって提案された。[ 14 ]
上記のように、年数n を次のように表す。、 どこそしてそれぞれ世紀と年の下2桁を表します。そして余りを表すそしてそれぞれを4で割ると、終末の曜日を表す数字は余りによって与えられる。。
(1966年8月7日)分割後の残余4 倍はそれによって10回は1966年の終末はつまり、月曜日です。7と8月の終末の日(つまり8)の差は答えは日曜日。[ 15 ]
終末は、その年の主日の文字と次のように関連しています。
グレゴリオ暦では400年間に146,097日、つまり正確には20,871の7日間週があるため、基準日は4世紀ごとに繰り返されます。例えば、1700年から1799年までの基準日は、2100年から2199年までの基準日と同じ、つまり日曜日です。
隣接する表には、400年周期の終末の出来事が示されています。特にユリウス暦の場合は「J」の記号が付いている場合を除き、各世紀はグレゴリオ暦およびプレレプティック・グレゴリオ暦に基づいています。グレゴリオ暦の閏年は強調表示されています。
負の年は天文学的な年号を使用します。紀元前25年は-24で、-100J(プロレプティック・ユリウス暦)または-100(プロレプティック・グレゴリオ暦)の列の76行目に示されます。
月曜日が終末の日となる閏年は、400 年周期で日曜日が 97 日飛ばされることを意味します。したがって、日曜日が終末の日となる年の総数は 71 から月曜日が終末の日となる閏年の数を引いた数になります。2000 年 2 月 29 日は月曜日が終末の日となる日が飛ばされ、閏日のパターンはその閏日を中心に対称であるため、平日ごとの終末の頻度 (平年と閏年を合計) は月曜日を中心に対称になります。閏年の平日ごとの終末の頻度は、2000 年の終末の日である火曜日を中心に対称になります。
特定の日付が特定の曜日に当たる頻度は、上記から簡単に導き出すことができます(1月1日から2月28日までの日付については、前年の終末の日と関連付けます)。
例えば、2月28日は前年の終末日の翌日なので、火曜日、木曜日、日曜日などにそれぞれ58回ずつ現れます。2月29日は閏年の終末日なので、月曜日、水曜日などにそれぞれ15回ずつ現れます。
ユリウス暦の28年周期における終末の日の頻度に関して言えば、平日ごとに閏年が1回、平年が3回あり、平年は閏年の6年後、17年後、23年後に訪れます(つまり、6年、11年、6年、5年の間隔で訪れます。ただし、12年後には終末の日の順番が飛ばされるため、均等に分布しているわけではありません)。この周期は、3月1日以降の任意の日付が特定の平日に当たる場合にも適用されます。
2月28日までの任意の日付が特定の曜日に当たる場合、平年は閏年の5年後、11年後、22年後の3年間であり、その間隔はそれぞれ5年、6年、11年、6年となります。したがって、周期は同じですが、閏年の前ではなく後に5年の間隔が設けられています。
したがって、2月29日以外の日付については、特定の曜日に当たる平年間の間隔は6、11、11です。たとえば、ページ下部の「月曜日から始まる平年」で、1906年から2091年までの年を参照してください。
2月29日が特定の曜日に当たるのは28年に一度だけで、もちろんその年は閏年である。
グレゴリオ暦は現在、夏至や冬至などの天文現象と正確に一致しています。このユリウス暦の修正は1582年に初めて実施されました。暦のずれを修正するために10日間がスキップされ、終末の日が10日間(つまり3営業日)後ろに移動します。10月4日木曜日(ユリウス暦では終末の日は水曜日)の後に、10月15日金曜日(グレゴリオ暦では終末の日は日曜日)が続きます。この表にはユリウス暦の年が含まれていますが、アルゴリズムはグレゴリオ暦とプロレプティック・グレゴリオ暦のみに対応しています。
グレゴリオ暦はすべての国で同時に採用されたわけではないため、何世紀にもわたって、地域によって同じ日でも異なる日付が使われていたことに注意してください。
1985年9月18日の曜日を知りたいとしましょう。まず、世紀の基準日である水曜日から始めます。これに、上記のa、b、cを加えます。
これによりa + b + c = 8となります。水曜日から 8 日を数えると、1985 年の終末の日である木曜日に到達します。(数字を使うと、7 を法とする算術では 8 は 1 と合同です。世紀の基準日は水曜日 (インデックス 3) であり、3 + 1 = 4 なので、1985 年の終末の日は木曜日 (インデックス 4) でした。)次に、9 月 18 日を、近くの終末の日である 9 月 5 日と比較します。18 日は終末の日から 13 日後、つまり 2 週間より 1 日少ないことがわかります。したがって、18 日は水曜日 (木曜日の前日) でした。 (数字を使って説明すると、7を法とする計算では、13は6、つまり-1と合同です。したがって、終末の日である木曜日から1を引くと、1985年9月18日は水曜日だったことがわかります。)
アメリカ南北戦争がサムター要塞で勃発した曜日、つまり1861年4月12日を求めたいとしましょう。世紀の基準日は火曜日から94日後、つまり金曜日でした(18 × 5 + ⌊ 18 / 4 ⌋で計算されます。または、上記の表で世紀の基準日を確認してください)。数字の61は6日間のずれを示し、終末日は木曜日でした。したがって、4月4日は木曜日だったので、8日後の4月12日は金曜日でした。
。平年は終末が前年より 1 日遅く、閏年は 2 日遅くなります。したがって、任意の世紀内では、12 年ごとに終末が 12 + 3 = 15 日 = 1 日早まります。(「12 年は 1 日です」)。そこで、世紀の終末に、その後の 12 年の数、余り、および余りの中の 4 の数を加えます。