こんにちは。福田泰裕です。
突然ですが、あなたの誕生日は何月何日ですか?
おそらく全員が自分の誕生日を知っていると思います。
それでは、あなたの誕生日は何曜日ですか?
この質問に答えられる人は、ほとんどいないでしょう。
しかし、実は計算によって求めることが可能なのです!
今回は、誕生日の曜日を求める公式(ツェラーの公式)についてご紹介します!
最後まで読んでいただけると嬉しいです。
目次
曜日を求めるツェラーの公式は、次のようなものです。
【ツェラーの公式】
曜日番号を、日曜日から土曜日まで順に \(1,2,3,4,5,6,7\) とする。
西暦 \(100j+k \) 年 \(m\) 月 \(d\) 日の曜日の番号 \(h\) は、
$$h \equiv \left( d+ \left\lfloor \frac{26(m+1)}{10} \right\rfloor +k+ \left\lfloor \frac{k}{4} \right\rfloor + \left\lfloor \frac{j}{4} \right\rfloor – 2j \right) \pmod 7$$
ただし、1月と2月はそれぞれ前年の13月、14月として計算する。
(例:1990年1月2日生まれは、1989年13月2日生まれとして計算する。)
例えば1990年5月10日の場合、
$$j=19,k=90,m=5,d=10$$
となります。
これを公式に代入すると…👇
$$ \left\lfloor \frac{26(m+1)}{10}\right\rfloor = \left\lfloor \frac{26(5+1)}{10}\right\rfloor = \left\lfloor 15.6 \right\rfloor =15$$
$$ \left\lfloor \frac{k}{4}\right\rfloor = \left\lfloor \frac{90)}{4}\right\rfloor = \left\lfloor 22.5 \right\rfloor =22$$
$$ \left\lfloor \frac{j}{4}\right\rfloor = \left\lfloor \frac{19}{4}\right\rfloor = \left\lfloor 4.75 \right\rfloor =4$$
なので、
\(\displaystyle d+ \left\lfloor \frac{26(m+1)}{10} \right\rfloor +k+ \left\lfloor \frac{k}{4} \right\rfloor + \left\lfloor \frac{j}{4} \right\rfloor – 2j \)
\(=10+15+90+22+4-2 \times 19 \)
\(= 103\)
\(\equiv 5 \pmod 7\)
曜日番号が 5 なので、木曜日となります。
なぜこのツェラーの公式で曜日を求めることができるのか?
この公式の意味を考えてみましょう。
まず、曜日の考え方です。
西暦1年1月1日は土曜日です。
ツェラーの公式では、西暦1年1月1日から何日経過したのかを数えています。
1日経過すれば日曜日、2日経過すれば月曜日‥‥‥
そして、7日経過すればまた土曜日に戻ります。
8日経過すれば日曜日、9日経過すれば月曜日‥‥‥
と、7日ごとに曜日は繰り返されます。
つまり、経過日数を7で割ると曜日が分かるのです。
これが、7 で割った余りを曜日番号 \(h\) にして、\(h=1\) が日曜日から始まる理由です。
次に、西暦1年1月1日から西暦 \(x\) 年の1月1日までの日数を求めます。
1年間は365日なので単純に \(365(x-1)\) 日としたいのですが、そうはいきません。
閏年を考慮しなければならないからです。
閏年では2月29日があるため、1年間が366日となります。
西暦の閏年は、次のルールに従って決められています。
このような複雑なルールがあるため、計算がややこしくなります。
100年ごとに特別な場合があるので、年号を \(100j+k\) とおきます。
まず、閏年を無視すると、経過日数は \((100j+k-1)\times 365\) 日。
基本的に、100年間で25回の閏年があるので \(+25j\) 日。
ただし、100年に一度は閏年ではないので \(-j\) 日。
例外的に、400年に一度閏年になるので \(\displaystyle + \left\lfloor \frac{j}{4} \right\rfloor \) 日。
そして、年号の下2桁の部分で考えると、4年に1回の閏年があるので \(\displaystyle + \left\lfloor \frac{k}{4} \right\rfloor \) 日。
つまり、西暦 \(100j+k\) 年1月1日までの経過日数は、
$$ (100j+k-1)\times 365 +25j-j+ \left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor $$
ここで、7 を法とすると、
$$365 \equiv 1$$
$$100 \equiv 2$$
$$25 \equiv 4$$
なので、
\(\displaystyle (100j+k-1)\times 365 +25j-j+ \left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor \)
\(\displaystyle \equiv (2j+k-1)\times 1 +4j-j+ \left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor \)
\(\displaystyle = k-1+5j +\left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor \)
\(\displaystyle \equiv k-1-2j +\left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor \)
となります。
これは「-1」の部分を除けば、ツェラーの公式の後半部分と一致しています。
つぎに、その年の1月1日から、\(m\) 月 \(d\) 日までの経過日数を数えましょう。
しかしここでも難しい計算があります。
月には大の月と小の月があり、更に2月は28日までしかありません。
\(m\) 月の前日までの日数を数えて7で割った余りを見てみると、次のようになります👇
月(\(m\)) | 日数 | 前日までの日数 | mod 7 |
---|---|---|---|
1 | 31 | 0 | 0 |
2 | 28 | 31 | 3 |
3 | 31 | 59 | 3 |
4 | 30 | 90 | 6 |
5 | 31 | 120 | 1 |
6 | 30 | 151 | 4 |
7 | 31 | 181 | 6 |
8 | 31 | 212 | 2 |
9 | 30 | 243 | 5 |
10 | 31 | 273 | 0 |
11 | 30 | 304 | 3 |
12 | 31 | 334 | 5 |
13 | 31 | 365 | 1 |
14 | 28 | 396 | 4 |
mod 7 を見ると、2月と3月が「3」で連続しています。
それ以外は、14月まで連続していません。
そこで、\(m\) をうまく調整してmod 7 をそろえたのが、
$$\left\lfloor \frac{26(m+1)}{10} \right\rfloor$$
です。
計算してみると…👇
月(\(m\)) | 日数 | 前日までの日数 | mod 7 | \(\left\lfloor \frac{26(m+1)}{10} \right\rfloor\) | mod 7 |
---|---|---|---|---|---|
1 | 31 | 0 | 0 | 5 | 5 |
2 | 28 | 31 | 3 | 7 | 0 |
3 | 31 | 59 | 3 | 10 | 3 |
4 | 30 | 90 | 6 | 13 | 6 |
5 | 31 | 120 | 1 | 15 | 1 |
6 | 30 | 151 | 4 | 18 | 4 |
7 | 31 | 181 | 6 | 20 | 6 |
8 | 31 | 212 | 2 | 23 | 2 |
9 | 30 | 243 | 5 | 26 | 5 |
10 | 31 | 273 | 0 | 28 | 0 |
11 | 30 | 304 | 3 | 31 | 3 |
12 | 31 | 334 | 5 | 33 | 5 |
13 | 31 | 365 | 1 | 36 | 1 |
14 | 28 | 396 | 4 | 39 | 4 |
1,2月以外、見事にそろいました!
このため1月と2月は、前年の13月、14月として計算しています。
前日までの日数が分かったので、「+1日」で月の初めの日になります。
あとは日数の \(d\) を足せば、目的の日に到達します!
つまり…👇
$$\left( k-1-2j +\left\lfloor \frac{j}{4} \right\rfloor + \left\lfloor \frac{k}{4} \right\rfloor \right) + \left(\left\lfloor \frac{26(m+1)}{10} \right\rfloor +1 +d \right)$$
$$=\left( d+ \left\lfloor \frac{26(m+1)}{10} \right\rfloor +k+ \left\lfloor \frac{k}{4} \right\rfloor + \left\lfloor \frac{j}{4} \right\rfloor – 2j \right) $$
となり、ツェラーの公式が完成します!
いいかがでしたでしょうか。
最近はパソコンやスマホで過去や未来のカレンダーを簡単に確認することができますが、パソコンがなかった時代はカレンダーに載っていない過去や未来の曜日を知る術はありませんでした。
そう考えると、このツェラーの公式はとても役に立つ公式だったと考えられます。
今はスマホで簡単に確認できますが…計算で求めることができたという事を知っておいてもらえると嬉しいです。
最後まで読んでいただき、ありがとうございました!
質問やご意見、ご感想などがあればコメント欄にお願いします👇