いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

西暦Y年M月D日の曜日を求める(2)

 季節の1周にはだいたい365.2422日かかります(地球の公転周期が365.2422日、ということ)。半端ですね。しかしちょうど365日でキッカリ季節が1周、なんて方が逆に不自然でしょう。今、日本で使われている暦はグレゴリオ暦と言います。グレゴリオ暦ではだいたい4年に1回ずつ閏年がやってきます。これがないと、つまり毎年365日だとすると、1年経つごとに0.24日程度ずつ季節が遅れてゆきます。4年経てば季節はカレンダーから1日ほど遅れます。40年で10日ですから、これはもうバカにならないズレです。ここ何十年かの平均では桜は4月3日頃に満開になっています。もし閏年がないなら、40年経つと4月13日、80年経つと4月23日に満開、となってしまうわけです。これはさずがにまずいでしょう。そこで、カレンダーの進みを遅らせるため、閏年が必要になります。現行の暦、グレゴリオ暦では次のように閏年の置き方が定められています。

ーーーーーーーーーーー

置閏法
西暦年が4の倍数なら閏年。ただし100の倍数なら閏年とはしない。さらにただし、400の倍数なら閏年とする。

ーーーーーーーーーーー

計算すると分かるのですが、グレゴリオ暦では1年の平均日数が365.2425日となり、実際の季節の動きに大変近いのです。
 さて、西暦p年からq年まで(p<q)で閏年は何回あるか、計算する方法を考えておきましょう。曜日の計算にはこれが必要です。[x]でx以下の最大の整数を表します([ ]はガウス記号。例えば[3.14]=3、[7]=7など)。まず4の倍数の年号が何個あるか調べます。1,2,3,……,p-1の中の4の倍数は[(p-1)/4]個、1,2,3,……,qの中の4の倍数は[q/4]個です。よってp年からq年までのうち4の倍数の年号は[q/4]-[(p-1)/4]個。同様で、p年からq年までのうち100の倍数は[q/100]-[(p-1)/100]個、400の倍数は[q/400]-[(p-1)/400]個となります。これで次が得られました。

ーーーーーーーーーーー

 西暦p年からq年まで(p<q)のうち、閏年

[q/4]-[(p-1)/4]-([q/100]-[(p-1)/100])+[q/400]-[(p-1)/400]回ある

ーーーーーーーーーーー

 (4の倍数の個数)-(100の倍数の個数)+(400の倍数の個数)ということです。例えば、1923年から2016年までで閏年
[2016/4]-[1922/4]-([2016/100]-[1922/100])+[2016/400]-[1922/400]=504-480-(20-19)+5-4=24
で、24回となります。

 次回で任意の年月日の曜日を計算する式が手に入ります!!