厳密な説明
1. 曜日の計算(\bmod 7)
基本手順:
- 基準日の曜日を数値化する(日曜を 0、月曜を 1、…、土曜を 6 など)
- 目標日までの日数 d を計算する
- (\text{[基準/きじゅん][曜日/ようび]}) + d \pmod{7} を計算する
月の日数の規則:
| 月 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 日数 | 31 | 28/29 | 31 | 30 | 31 | 30 | 31 | 31 | 30 | 31 | 30 | 31 |
閏年の判定:4 の倍数かつ(100 の倍数でない または 400 の倍数)。
例:2026 年 1 月 1 日の曜日。
基準:2000 年 1 月 1 日は土曜日(= 6)。
2000 年 1 月 1 日から 2026 年 1 月 1 日まで:26 年 + 閏年 日数。
26 年の日数:26 \times 365 = 9490。閏年:2000, 2004, …, 2024 → 7 回。合計 d = 9490 + 7 = 9497。
9497 \div 7 = 1356 余り 5。
6 + 5 = 11 \equiv 4 \pmod 7。木曜日(木 = 4 と設定した場合)。
2. ツェラーの公式(Zeller's congruence)
y 年 m 月 d 日の曜日 h(0 = 土、1 = 日、…、6 = 金)を与える公式:
h = \left(d + \left\lfloor \frac{13(m+1)}{5} \right\rfloor + K + \left\lfloor \frac{K}{4} \right\rfloor + \left\lfloor \frac{J}{4} \right\rfloor - 2J\right) \bmod 7
ここで m \ge 3(1, 2 月は前年の 13, 14 月として扱う)、K = y \bmod 100(年の下 2 桁)、J = \lfloor y/100 \rfloor(世紀)。
公式の意味:各項は日・月の補正・年の余り・閏年の補正・世紀の補正を合計した累積日数の mod 7 である。
3. 干支の計算
西暦 y 年の十干(甲 0、乙 1、…):
\text{[十干/じっかん]} = (y - 4) \bmod 10
十二支(子 0、丑 1、…):
\text{[十二支/じゅうにし]} = (y - 4) \bmod 12
理由:西暦 4 年が甲子年であることを基準に設定(基準年は文献により異なる場合がある)。
六十干支の周期 60 は \text{lcm}(10, 12) = 60。これは CRT を使う場合と異なり(\gcd(10,12) = 2 \neq 1)、十干と十二支の組み合わせは 60 通りのうち 30 通りしか実現しない(偶奇が一致する組み合わせのみ)。
4. 複合周期の問題(CRT の応用)
「日曜日かつ満月(朔望月 \approx 29.5 日 → 近似して 29 日周期と仮定)の次はいつか」:
d \equiv 0 \pmod{7}, \quad d \equiv r \pmod{29}
\gcd(7, 29) = 1 なので CRT より d \pmod{203} に一意の解がある。
実際の天文計算では朔望月(29.53 日)を有理近似し、連分数で良い近似分数を求めてから合同式を使用する(メトン周期 19 年 = 235 朔望月はこうして発見された)。
最終形
\boxed{\text{[曜日/ようび]} \equiv (\text{[基準/きじゅん][曜日/ようび]}) + (\text{[経過/けいか][日数/にっすう]}) \pmod{7}}
\boxed{\text{[十干/じっかん]} = (y-4)\bmod 10, \quad \text{[十二支/じゅうにし]} = (y-4)\bmod 12, \quad \text{[干支/えと][周期/しゅうき]} = 60}