見出し画像

日付を聞いて曜日を当てる方法:合同式

「大きな月(31日ある月)と小さな月(30日以下の月)は、かわりばんこに来ます。でも、7月と8月だけは大きな月が続くのよ」
「園長先生、それは違います。よくある間違いですね」
          ―5歳の頃、保育園の思い出

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

まず今年一年から

 さて、まず今月のカレンダーを見てみよう。1日は何曜日だろうか?1日と8日は同じ曜日のはずだ。何故同じ曜日なのだろうか。そう、一週間は7日なのだから、7日後は同じ曜日に決まっている。もちろん7の倍数である14日後(15日)、21日後(22日)も同じ曜日である。では、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    0
2    31
3    59(60)
4    90(91)
5    120(121)
6    151(152)
7    181(182)
8    212(213)
9    243(244)
10   273(274)
11   304(305)
12   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日までの曜日のずれ
月    ずれ
1    0
2    3
3    3(4)
4    6(0)
5    1(2)
6    4(5)
7    6(0)
8    2(3)
9    5(6)
10   0(1)
11   3(4)
12   5(6)
   ( )内はうるう年の場合

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

曜日と対応する数字
曜日 対応する数字
月    1
火    2
水    3
木    4
金    5
土    6
日    0

 それでは次の例題で、計算方法を理解しよう。

 例題)2001年1月0日(2000年12月31日)は日曜日である。それでは、
   (1)4月4日は何曜日か?
   (2)6月6日は何曜日か?
   (3)8月8日は何曜日か?
   (4)10月の第2水曜日は何日か?
 解答)
   (1)
    起点の1月0日は日曜日で、起点となる数は…0
    4月0日のずれの値は…6
    求めるのは4日なのでずれは…4
    これらを全て足し合わせて 0+6+4=10 10≡3に対応する曜日は…水曜日。
    よって4月4日は水曜日。
   (2)
    (1)と同じようにして、0(起点)+4(6月のずれ)+6(日)=10。よって水曜日。
   (3)
    同様に、0+2+8=10。 なので、水曜日。
   (4)
    10月1日は、0+0+1=1 で、月曜日。従って第1水曜日は3日なので、第2水曜日は10日。
 *お気づきだろうが、4月4日、6月6日、8月8日、10月10日、ついでに12月12日は、いつも同じ曜日である。

100年ごとでは

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

1月0日の曜日
年    曜日
2001    0
2002    1
2003    2
2004    3
2005    5
2006    6
2007    0
2008    1
2009    3
2010    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年毎の基準となる曜日(数)を挙げておく。

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

 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,…年代 6
400で割って100余る100年代
1700,2100,2500,…年代 4
400で割って200余る100年代
1800,2200,2600,…年代 2
400で割って300余る100年代
1900,2300,2700,…年代 0

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

各月の値
月    値
1    0
2    3
3    3
4    6
5    1
6    4
7    6
8    2
9    5
10   0
11   3
12   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=8
  (4)D=5
  (5)E=3
  (6)A+B+C+D+E=52。52÷7=7…3 で、F=3
  (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)よって木曜日。

 最初は今年や来年等すぐ答の分かる日で練習して、だんだんといろいろな日付に挑戦しすると良い。この計算法を知っていて役に立つことは、私の経験では、まあ、なかった。

(2020.9.28)

 

この記事が気に入ったらサポートをしてみませんか?