28歳の誕生日は何曜日か

2001年7月3日 初版
2007年12月23日 改訂

私は1972年11月27日(月曜日)生まれですが、満28歳の誕生日である2000年11月27日もやはり月曜日です。このように、

28歳の誕生日はどんな人でも必ず、生まれた日と同じ曜日になります。

注1:
ただし、この法則(というほどのもんでもないっすね)が成り立つのは、閏年が4年ごとに規則正しく置かれている期間内(1900年3月1日〜2100年2月28日など)に限ります。「西暦が100の倍数であって400の倍数でない年(1700年、1800年、1900年、2100年など)は閏年にしない」というグレゴリオ暦に基づく補正が途中に入ってしまうとこの法則は破れます(現代人にはほとんど関係ありませんが)。西暦2000年は閏年なのでこの法則を破りません。

注2:
28歳だけでなく56歳、84歳の誕生日も同じ曜日になります。誕生日に限った話ではなく、一般に x 年 y 月 z 日に対して、そのちょうど (28×n) 年後である (x+28×n) 年 y 月 z 日は必ず同じ曜日になります。

注3:
この話では「2月29日生まれの人」については残念ながら除外して考えています。

考察

まず、曜日は7日で一回りするので、次のような基本的な規則が成り立ちます。

したがって、生まれた日から n 年後の誕生日が何曜日になるかは、365日・365日・365日・366日・365日・365日・365日・366日…という4年周期のサイクルの中でどのフェイズに出生日があるかによって変わってきます。

具体的には次の4つの場合が存在します。(下段のカッコ内の数字は、誕生日と誕生日の間で曜日が何日ずれるかを示しています。)

表1:出生日の4タイプ
出生日満1歳満2歳満3歳満4歳満5歳
タイプ A
3歳で初めて
2/29 を迎える人
365日
(+1日)
365日
(+1日)
365日
(+1日)
366日
(+2日)
365日
(+1日)
タイプ B
2歳で初めて
2/29 を迎える人
365日
(+1日)
365日
(+1日)
366日
(+2日)
365日
(+1日)
365日
(+1日)
タイプ C
1歳で初めて
2/29 を迎える人
365日
(+1日)
366日
(+2日)
365日
(+1日)
365日
(+1日)
365日
(+1日)
タイプ D
0歳で初めて
2/29 を迎える人
366日
(+2日)
365日
(+1日)
365日
(+1日)
365日
(+1日)
366日
(+2日)

例えば私(1972年11月27日生まれ)の場合は、生まれた1972年がちょうど閏年だったので A となります。
この出生日のタイプは、西暦の生年を4で割った余りの値によって 0→A、1→B、2→C、3→D と求められます。ただし、1月・2月生まれの人はさらにアルファベットをサイクリックに1つ戻したもの (A→D, C→B, etc) がその人のタイプとなります。

この4つの各タイプについて、誕生日が来るごとに出生日からいくつ曜日が進んでいくかを積算していくと以下のようになります。

表2:曜日のずれ日数
満1歳満2歳満3歳満4歳満5歳満6歳満7歳満8歳満9歳満10歳満11歳満12歳
タイプ A+1+2+3+5+6+7+8+10+11+12+13+15
タイプ B+1+2+4+5+6+7+9+10+11+12+14+15
タイプ C+1+3+4+5+6+8+9+10+11+13+14+15
タイプ D+2+3+4+5+7+8+9+10+12+13+14+15

この表で曜日のずれが+7日+14日のように7の倍数になっている年にのみ、誕生日の曜日が生まれた日と一致するわけです。(例えば私の出生日はタイプ A ですから、6歳の誕生日(1978年11月27日)が出生日と同じ曜日になることがわかります。)

しかし、曜日のずれ日数が7の倍数になる年齢は、表2の通り「タイプ」によってバラバラです。6歳の誕生日が出生日と同じ曜日になるのはタイプ A か B の人だけですし、11歳の誕生日が出生日と同じになるのはタイプ B,C,D の人だけです。今解くべき問題は、

タイプA〜Dの全ての人について、誕生日の曜日が出生日と同じになるのは何歳の時か?

という話ですから、「曜日のずれが7の倍数」の他にも条件が必要になります。

ここで再び表2を見ると、満4歳、満8歳、満12歳など、年齢が4の倍数になる年には必ず曜日のずれ日数が全タイプで同じになることが分かります。(こうなるのは閏年が4年に一度入るためです。4年間のずれ日数を合計すると、1+1+1+2=1+1+2+1=1+2+1+1=2+1+1+1=5 となって、出生日がどのタイプの人でも4年間でのずれは必ず+5日になります。)

以上のことから、

になるような誕生日ならば、出生日のタイプが A〜D のどの人についても必ず、生まれた日と同じ曜日になるはずです。

ここで、曜日のずれは4年ごとに5日(1×3+2×1)増えますから、上の2条件を満たすのは、曜日のずれ日数が5と7の最小公倍数である+35日になる年、すなわち28歳の誕生日ということになります。同様にして、56歳84歳の誕生日も出生日と同じ曜日に必ずなります。■

応用編

さて、出生日のタイプによらず常に出生日と同じ曜日になる誕生日は28・56・84・…歳とわかりましたが、ある一つのタイプだけを考えれば、曜日が同じになる誕生日はこの3つ以外にもあります(例:タイプ A の6歳やタイプ B の6歳、11歳などが該当します)。では、4つの各タイプごとに「曜日が出生日と同じになるような誕生日」を(28・56・84歳以外にも)全て求めるにはどうすれば良いでしょうか?

ポイントは「曜日のずれが7の倍数になるたびに同じ曜日になる」という点です。

そこでまず、表1に挙げた「1年ごとの曜日のずれ日数」を延々と書いた数列を考えます。これは各タイプについて、

タイプA:{1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+…}
タイプB:{1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+…}
タイプC:{1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+…}
タイプD:{2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+2+1+1+1+…}

という数列になります(タイプごとに始まりの部分が違ってるだけですね)。

次に、この数列を頭から順に断片(部分列)に切り分けていきます。この時にお約束として、

ことにします。すると、タイプ A では

{1+1+1+2+1+1 (= 7)
1+2+1+1+1+2+1+1+1+2+1 (= 14)
1+1+2+1+1+1 (= 7)
2+1+1+1+2 (= 7)
1+1+1+2+1+1 (= 7)
1+2+1+1+1+2+1+1+1+2+1 (= 14)
…}

のように切り分けられます。このとき、部分列の切れ目に当たる各年齢の誕生日が、出生日と同じ曜日を持つことになるわけです。ここで切り分けられた部分列をじっと眺めてみると、その種類は

表3:和が7の倍数になる部分列
部分列項の数(年数)
a1+1+1+2+1+1 (= 7)6
b1+2+1+1+1+2+1+1+1+2+1 (= 14)11
c1+1+2+1+1+1 (= 7)6
d2+1+1+1+2 (= 7)5

の4種類しか存在しないことに気づきます。また、それぞれの部分列の連鎖の仕方も、必ず a → b → c → d → a → b → c → d → a … の順になります(a の後に c や d が続くことは絶対にありません。)。

この性質に注目すると、出生日と同じ曜日になる誕生日を全て列挙することができます。私の場合、出生日は表1よりタイプ A でした。よって、曜日のずれ日数の数列は部分列 a {1+1+1+2+1+1} から始まります。そして a の長さである6年後、つまり6歳(1978年)の誕生日が人生初の「生まれた日と同じ曜日の誕生日」になります。

a の後には部分列 b {1+2+1+1+1+2+1+1+1+2+1} が続きます。したがって次に曜日が出生日と一致するのは、b の長さである11年が経過した17歳(1989年)の誕生日になります。

同様にして部分列は c, d と続きますので、6年後の23歳(1996年)、その5年後の28歳(2000年)の誕生日も曜日が出生日と一致します。d の後にはまた a が続きます。…

このようにして、各タイプについて曜日が出生日と一致する誕生日を全て求めることができます。まとめると以下のようになります。前節で見たように、28歳・56歳・84歳は全てのタイプで出生日と同じ曜日になることが分かります。■

表4:生まれた日と同じ曜日になる誕生日一覧
出生日のタイプ部分列のパターン出生日と同じ曜日の誕生日
タイプAabcdabcdabcd…6,17,23,28,34,45,51,56,62,73,79,84
タイプBcdabcdabcdab…6,11,17,28,34,39,45,56,62,67,73,84
タイプCbcdabcdabcda…11,17,22,28,39,45,50,56,67,73,78,84
タイプDdabcdabcdabc…5,11,22,28,33,39,50,56,61,67,78,84

最後に

曜日の確認は FreeBSD の cal(1) コマンドで行ないました。

2007/12/23: BUMP OF CHICKEN の「orbital period」というアルバムの発売に伴って、検索でこのページにたどり着く人が最近増えているようです。なので分かりにくい箇所を少し修正。これ書いたの、ちょうど前の会社を辞めて暇だった頃だなあ…。

戻る


Taro Zzz (taro@hauN.org)