インストラクターブログ

サマーウォーズ②~ツェラーの公式~

こんにちは。学生スタッフのA.S.です。サマーウォーズの序盤で健二が夏希先輩の誕生日の曜日を当てるのに使用していたツェラーの公式について書きたいと思います。これはドイツの数学者グリスティアン・ツェラーが考案したy年m月d日から曜日を算出する計算方法です。なお今回はグレゴリオ暦に限定して解説していきます。

\[h = (d + \lfloor \tfrac{26(m + 1)}{10} \rfloor + Y + \lfloor \tfrac{Y}{4} \rfloor + 5C + \lfloor \tfrac{C}{4} \rfloor ) \bmod 7 \]

ただし \( C = \lfloor \tfrac{y}{100} \rfloor , Y = y \bmod 100 \) であり、1・2月は前年の13・14月として扱う。と堅苦しいのはここまでにして、一個ずつ見ていきましょう。

まず「3の倍数の性質~合同式~」でも紹介した合同式の \( \bmod 7\)がありますね。これは割った余りで曜日が分かるようになっています。余り0が土曜、1が日曜、……6が金曜を表しています。次に()の中身を見てみましょう。

①\(d\)は日です。\( \lfloor a \rfloor \)は床関数といって、数字の切り捨てを意味します。例えば、\( \lfloor 23.4 \rfloor = 23, \lfloor \tfrac{10}{4} \rfloor = 2 \) です。\( \lfloor \tfrac{26(m + 1)}{10} \rfloor \)は月ごとの日数の違いを調整しています。

②\(Y\)と\(C\)は年の上半分と下半分を表しています。今年なら\(Y=20,C=25\)です。\( \lfloor \tfrac{Y}{4} \rfloor \) はうるう年の「4年に一度、1日追加する」を表しています。

③\(5C\)は世紀による曜日のずれを調整しています。\( \lfloor \tfrac{C}{4} \rfloor \)は、うるう年の「100の倍数の年はうるう年とせず、400の倍数の年はうるう年とする」を表しています。例えば、1900年はうるう年としない、2000年はうるう年ということです。

これでツェラーの公式が理解できましたね。証明は調べていただくとすぐ出てきます(今回の解説は証明を元に噛み砕かせてもらいました)。是非ご自分の誕生日などを代入して久しぶりに計算してみましょう。

150
カレンダー