index(top)

(to Mathematics top ->)


日付を聞いて曜日を当てる方法

 「1962年2月13日は何曜日?」といった質問にすぐに答えられるでしょうか。ある種の天才は何も考えずに曜日が心に浮かんでくるのかもしれません。しかし、そうでない我々も簡単な計算ですぐに答えられるのです。もちろんちょっとした記憶力と練習は必要ですが、慣れれば数秒で答えられるようになります。このことについて考えてみましょう。なお、理屈はどうでも計算さえ出来れば良い、という顰蹙な方は、一番下の方の計算のまとめを見てください。

 さて、まず今月のカレンダーを見てください。1日は何曜日ですか?1日と8日は同じ曜日ですね。何故同じ曜日なのでしょう。そう、一週間は7日なのだから、7日後は同じ曜日に決まっていますね。もちろん7の倍数である14日後、21日後も同じ曜日です。では、2月1日が日曜日だったら、3月1日は何曜日でしょうか?そう、うるう年でなければ2月は28日しかありませんから、3月1日は2月1日の28日後、28は7の倍数ですから3月1日は2月1日と同じ曜日です。では1月1日が日曜日だったら2月1日は?そう、1月は31日あって、31は7の倍数の28より3多いので、曜日は3日後ろにずれます。日曜日の3日後は水曜日、従って1月1日が日曜日だったら2月1日は水曜日です。

 ここまでの話をまとめると次の通りです。
 「ある日の曜日がわかっていて、その日から曜日を知りたい日までの日数がN日ならば、求める曜日はNを7で割った余りだけ最初の曜日から後ろにずれた曜日である。」
 では、下の表を使って、ちょっと計算してみましょう。この表は1月1日から各月の1日までの日数をまとめたものです。

1月1日から各月の1日までの日数
1 2 3 4 5 6 7 8 9 10 11 12
日数 0 31 59
(60)
90
(91)
120
(121)
151
(152)
181
(182)
212
(213)
243
(244)
273
(274)
304
(305)
334
(335)
   ( )内はうるう年の場合

 例題)1月1日が日曜日のとき、10月10日は何曜日か。
 答)表より10月1日は1月1日より273日後。従って10月10日は282日後。282÷7=40…2なので、曜日は2日ずれて火曜日。

 あまり簡単な計算ではありませんね。大体暗算でやるためにはこの表を覚えなくてはいけませんが、「10月が273」なんて覚えるのも大変です。でも良く考えてみると、必要なのは「何日後」ではなくてそれを「7で割った余り」です。ですから今の場合、7も14も21も「0と同じ」ですし、8も15も22も「1と同じ」です。
 というわけで、計算を簡単にするためにいっそのこと「7で割った余りが同じ2つの数は同じもの」と決めてしまい、計算するときにはその中のなるべく小さい数に置き換えることにしましょう。でも「同じ」といっても、普通の計算と混同してしまうので、「=(イコール)」で結ぶわけにはいきません。数学記号で「同じ」を表すもう一つの記号、「≡(合同)」を使いましょう。つまり、「7で割った余りを考えれば、0≡7」と書けます。この所謂「合同式」は整数論には欠かせないもので、知っておくといろいろと便利です。合同って、図形だけのものではなかったのですね。整数論では普通、aとbの2つの数がmで割った余りが等しいとき、
    a≡b  mod m
と書いて、「aはbとmを法として合同である(a is congruent to b modulo m.)」といいます。例えば、
    0≡7777  mod 7
ですし、負の数においても同様に、
    -2≡5  mod 7
と書くことが出来ます。
 では、先ほどの表の数字を7で割った余りに書き直して、いくつか計算練習をして見ましょう。

表1.1月と各月の同じ日の曜日のずれ
1 2 3 4 5 6 7 8 9 10 11 12
日数 0 3 3
(4)
6
(0)
1
(2)
4
(5)
6
(0)
2
(3)
5
(6)
0
(1)
3
(4)
5
(6)
   ( )内はうるう年の場合

 これで大分計算は楽そうですね。暗算でやる場合はこの表を覚える必要がありますが、うるう年のときは3月以降は1を足すだけなので、普通の年の12個だけ覚えればよいでしょう。あ、あと、1日を起点とすると、例えば10日の計算には「ずれ」の9(10-1)日を計算することになり間違いやすいので、起点を0日にしましょう。まあ、この辺は以降の例題で理解してください。また、計算しやすいように曜日にも数字を以下のように対応させます。これも覚えてください(まあ、これは覚えるまでもないでしょうが)。

表2.曜日と対応する数字
曜日
対応する数字 1 2 3 4 5 6 0


 それでは次の例題で、計算方法を理解してください。

 例題)2001年1月0日(2000年12月31日)は日曜日です。それでは、
   (1)3月3日は何曜日ですか?
   (2)5月5日は何曜日ですか?
   (3)12月24日は何曜日ですか?
   (4)10月の第3日曜日は何日ですか?
 解答)
   (1)
    起点の1月0日は日曜日で、起点となる数は表2.より…0
    3月0日のずれの値は表1.より…3
    求めるのは3日なのでずれは…3
    これらを全て足し合わせて 0+3+3=6 6に対応する曜日は表2.より…土曜日。
    よって3月3日は土曜日。
   (2)
    (1)と同じようにして、0(起点)+1(5月のずれ)+5(日)=6。よって土曜日。
   (3)
    同様に、0+5+24=29。 29≡1 mod 7 なので、月曜日。
   (4)
    10月1日は、0+0+1=1 で、月曜日。従って第1日曜日は7日なので、第3日曜日は21日。

 これで、ある1年の曜日は計算出来るようになりました。カレンダーを頭に入れるだけなら今年のものだけでよいかもしれません。でももう少し頑張って全ての年で計算出来るようにしましょう。
 もうおわかりでしょうが、今度はある年の1月0日だけ覚えておいて、求めたい年の1月0日の曜日がいくつずれるか計算すればよいのです。次の表を見てください。

1月0日の曜日
2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
曜日 0 1 2 3 5 6 0 1 3 4


 見て分かるように、普通は一年に1日ずつずれていって、うるう年の後は2日ずれています。これは1年=365日で、365≡1(mod 7)であることに他なりません。従って、求める年のずれは、基準年から(1)何年経ったか、(2)その間何回うるう年があったか、の2つを足せば求められます。基準年は1900年、2000年など100年ごとにすればよいでしょう。
 それでは次の例題で、計算方法を理解してください。

 例題)
   (1)1900年1月0日は日曜日です。1962年2月13日は何曜日ですか?
   (2)1978年12月24日は何曜日ですか?
   (3)1980年2月14日は何曜日ですか?
 解答)
   (1)
    起点の1月0日は日曜日で、…0
    年のずれ…62
    うるう年のずれは62÷4=15.5より…15
    2月のずれ…3
    求めるのは13日なのでずれは…13
    これらを全て足し合わせて 0+62+15+3+13=93 93≡2(mod 7)より火曜日。
    数が大きくなってきたら、計算途中で「合同」な小さな数に変えればよいでしょう。
    例えば、0+62+15=77≡0、0+3+13=16 16≡2 等とします。
   (2)
    (1)と同じようにして、0+78+19(78÷4=19.5)+5+24=126≡0。よって日曜日。
    これも、0+78=78≡1、1+19+5+24=49≡0。等とすると計算しやすいです。
   (3)
    同様に、0+80+19+3+14=116。 116≡4 mod 7 なので、木曜日。
    80÷4=20ですが、2月はまだその年のうるう日(2/29)の影響を受けていないことに注意してください。
    うるう年の1,2月はこのようにうるう年のずれから1を引きます。

 さて、これである100年間については計算出来るようになりました。最後は100年毎の1月0日を求めるだけです。「西暦0年を覚えておいて100年毎のずれを計算するのだろう」と思ったあなた、スルドイけど違います。実は400年分(といっても4つだけですが)覚えておけばいいのです。なぜかといいますと、現行のグレゴリオ暦では、うるう年になるのは次のような年です。
 (1)基本的には西暦年が4で割り切れる年がうるう年。
 (2)しかし、100で割り切れたらうるう年ではない。
 (3)さらにしかし、400で割り切れたらやっぱりうるう年。
ですから、400年のうちに97回のうるう年があるわけです。というわけでこの400年の間の曜日のずれは497。497≡0(mod 7)なので、400年ごとに曜日は一緒になります。
 では、400年毎の基準となる曜日(数)を挙げておきましょう。

表3.「100年代」の基準の数字
400で割り切れる100年代
1600,2000,2400,…年代
400で割って100余る100年代
1700,2100,2500,…年代
400で割って200余る100年代
1800,2200,2600,…年代
400で割って300余る100年代
1900,2300,2700,…年代


 6,4,2,0と並んでいるので覚えやすいですね。では、最後の例題です。

 例題)
   (1)1762年2月13日は何曜日ですか?
   (2)2333年3月3日は何曜日ですか?
   (3)2000年2月14日は何曜日ですか?
 解答)
   (1)
    1700年代の基準値は…4
    年のずれ…62
    うるう年のずれは62÷4=15.5より…15
    2月のずれ…3
    求めるのは13日なのでずれは…13
    これらを全て足し合わせて 4+62+15+3+13=97 97≡6(mod 7)より土曜日。
   (2)
    (1)と同じようにして、0+33+8(33÷4=8.25)+3+3=47≡5。よって金曜日。
   (3)
    同様に、6+0+(-1)+3+14=22。 22≡1 mod 7 なので、月曜日。
    2000年がうるう年であることに注意してください。
    うるう年の1,2月はこのようにうるう年のずれから1を引くのでした。

計算のまとめ

 さて、計算法をまとめてみましょう。いきなりここを読んでいる方は、必要に応じて上を参照してください。

 (1)求める日付の「100年代」の値を下表によって決める。この値をAとする。

「100年代」の基準の数字
400で割り切れる100年代
1600,2000,2400,…年代
400で割って100余る100年代
1700,2100,2500,…年代
400で割って200余る100年代
1800,2200,2600,…年代
400で割って300余る100年代
1900,2300,2700,…年代


 (2)求める年の下二桁をBとする。
 (3)求める年の下二桁を4で割った値を計算する。このとき、求める年がうるう年で、かつ求める月が1,2月の場合は1を引く。この値をCとする。
 (4)求める月に対応する値を下表によって求める。この値をDとする。

各月の値
1 2 3 4 5 6 7 8 9 10 11 12
0 3 3 6 1 4 6 2 5 0 3 5


 (5)求める日の数をEとする。
 (6)A+B+C+D+Eを計算し、これを7で割った余りFを求める。なお、計算途中で随時7で割った余りに置き換えても良い。
 (7)Fと曜日を以下の表で対応させる。

曜日と対応する数字
曜日
対応する数字 1 2 3 4 5 6 0


 例1)1962年2月13日
  (1)1900年代なのでA=0
  (2)B=62
  (3)62÷4=15…なので、C=15
  (4)2月なのでD=3
  (5)E=13
  (6)A+B+C+D+E=93。93÷7=13…2 で、F=2
  (7)よって求める曜日は火曜日。
  *)A+B+C+D+Eを求めるときに、A+B+C=77→0(7で割った余りに置き換え)
    0+D+E=16。16÷7=2…2 と計算しても良い。

 例2)2234年12月3日
  (1)A=2
  (2)B=34
  (3)C=2
  (4)D=5
  (5)E=3
  (6)A+B+C+D+E=46。46÷7=6…4 で、F=4
  (7)よって木曜日。

 例3)2408年2月14日
  (1)A=6
  (2)B=8
  (3)C=2-1=1(うるう年の2月)
  (4)D=3
  (5)E=14
  (6)A+B+C+D+E=32。32÷7=4…4 で、F=4
  (7)よって木曜日。

 最初は今年や来年等すぐ答の分かる日で練習して、だんだんといろいろな日付に挑戦しましょう。この計算法を知っていて役に立つことは、まあ、あるかもしれません(^_^;)。