第14話 生年月日と曜日*
「これで、健二君みたいに生年月日の曜日が瞬時に分かるんですか?」
柴山は興味津々そうに言った。
「当たり前だが、瞬時かどうかは個人の計算の速さに依存する。しかし、すべきことは単純。さっき、10月1日が木曜だったから、 7 で割ったときの余りが 1 だったらその日は木曜、という言い方をした。すると、余りと曜日に
0……水
1……木
2……金
3……土
4……日
5……月
6……火
という対応関係が見出される。すると、10月1日を1日目としたとき、1000日目が何曜日か聞かれたら
1000
= 10 × 10 × 10
≡ 3 × 3 × 3
= 9 × 3
≡ 2 × 3
= 6
だから、6に対応する曜日を見て火曜と結論づけることができる」
「なるほどー。ということは、例えば私の誕生日が何曜日を調べるには、今年の10月1日を 1 日目として、1993年4月8日が何日目かを考えればいいんですよね」
「そうそう。分かってると思うが、9月30日を 0 日目、9月29日を − 1 日目とするんだぞ……ってお前、1993年生まれか?」
「そうですけど」
「素数かどうか知ってる?」
「そう言われたら素数って言っているようなものじゃないでしょうか」
「そ、そうだな。というのも、俺の好きな映画に『ジュラシック・パーク』っていうのがあるんだけどさ」
「ああ、恐竜映画の! あれ面白いですよね」
アリサが目を丸くして食いついてきた。慈道はアリサを見て眉を踊らせる。
「実は日本で公開された日は1993年7月17日。1993も7も17も全て素数なんだよ」
「そ、そうですか……」
晴れ晴れとしたアリサも一瞬で雲がかる。
「驚くなかれ。なんと19930717も素数なんだよなこれが! こんな偶然あると思うか?」
慈道は妙にテンションが上がっていたが、二人は呆然としている。
「それでー、私の誕生日が何日目かなんですけどー」
何事もなかったように柴山は流れを元に戻そうとする。
「ふん、この
柴山は渋い顔をしてアリサの方をむき、掌を天井に向けた。
「ちなみに『ジュラシック・パーク』にマルコムって数学者がいてさ。そいつがカオス理論の専門家なんだよな。あれを見て俺も数学者になりたいと思ったもんだ」
「さすが先輩ですね。普通あの映画を見たら、考古学者とか、生物学者になりたい、って思うんじゃないでしょうか」
「おいおい。俺に普通なんて言葉は通用しないぜ」
「そうでした」
「あ、ごめん。話を戻そう。で、柴山の生年月日が何日目かを調べるにも、閏年とかを考慮すると結構面倒くさい。そもそも10月1日を1日目するなんてのも中途半端過ぎる」
「1月1日を基準にするんですか?」
「って思うじゃん。ま、とりあえずその路線で言ってみよう。ある年の1月1日が日曜だったする。この年の4月8日は、元日を1日目として何日目だろう。ちなみに閏年ではないとする」
「えっと、1月は31日、2月は28日、3月は31日あるので、
31 + 28 + 31 + 8 = 98
だから、 98 日目です」
アリサが手早く計算を行って答えた。
「はい、4月8日は何曜日だ?」
「98 はなにと合同かを考えればいいんですよね? 98 は……あ!
98 = 7 × 14
で 7 の倍数ですから
98 ≡ 0 mod 7
です。つまり4月8日は……0日目と合同?」
「なにも悩むことはない。1月1日が1日目なら、0日目は前の年の大晦日のことだ」
「はいはいはい。1月1日は日曜っていう設定でしたよね。4月8日は前の年の12月31日に合同だから、土曜日です」
「いいね。合同式は大分理解しているようだ。ただ、個人的に、 98 を 7 で割るという演算が、合同式のよいところを殺してしまっている。 28 が 0 と合同であるのは直ちに分かるよね」
「はい。 28 は 7 の倍数ですから」
「となると、
28 ≡ 0
31 ≡ 3
8 ≡ 1
も直ちに分かるから
98 = 31 + 28 + 31 + 8 ≡ 3 + 0 + 3 + 1 = 7 ≡ 0
として、 98 ≡ 0 を求めることもできる」
「凄い。とってもシンプルですね」
「結局、 mod 7 で考えるということは、すべての整数が 0、 1、 2、 3、 4、 5、 6 のどれかに合同であるということを意識することだね」
アリサは板書だけでなく、慈道の放つ重要そうな発言もメモしているようである。
「さて、結局元日の曜日と、その日が一年の何日目かが分かれば、その日が何曜か分かるんだけど、閏年の場合は2月の日数が + 1 されるために面倒なことが起こる。ここで頭を柔らかくしよう。別に、元日を基準にする必要はないわけだ。例えば4月1日を1日目として、その日を基準に何日目、という議論でも問題は生じない。そこで最も都合のよい日を1日目にする。その日はずばり3月1日だ。この日を1日目とすれば、2月28日は必ず365日目になり、閏年の場合、2月29日が366日目になる」
「そっか! 他の月日も何日目かが一意的に定まりますね。元日を1日目にすると、4月8日は閏年じゃない場合は 98 日目、閏年の場合は 99 日目になりますけど、3月1日基準ならば、閏年だろうがなんだろうが、4月8日は……39日目になりますね!」
流石に柴山の回転はアリサより速い。
「な、なるほど、合理的ですね」
「で、 3 月 1 日を 1 日目としたとき、 m 月 d 日は何日目かという話をしなければならない。少しばかり面倒だが」
「月によって何日あるかバラバラですものね。そういえば、
柴山が言った。
「なんだそりゃ?」
「お! 珍しい。これはですねえ」
柴山が嬉しそうに教壇に上がり、チョークで「二四六九士」と書いた。
「31 日までない月をこうやって語呂合わせで覚えるんですよ。サムライは武士の士とも書くので、これを十一としているんです」
柴山は席に戻り、得意そうに解説する。
「ほう、なるほどな。俺は逆に 31 日ある月を語呂で覚えていたな」
「へえ、一体どういう覚え方なんですか?」
「……秘密」
「え?」
「まあまあ」
慈道は無理矢理話を本流に戻す。
「例えば、 10 月 27 日が何日目かを求めるには、 3 月から 9 月までの日数に 27 を足せばよい。ということは、 m 月に対して、 3 月から (m − 1) 月までの日数の総和をあらかじめ調べておく必要がある。これを σ(m) で表すことにする。ただし、 3 月より前の日は考えないので σ(3) = 0 と定義する。明らかに
σ(m + 1) = σ(m) + (m月の日数) (m ≧ 3)
という漸化式が成り立つ。最終的には mod 7 で考えればいいから
σ(m + 1) ≡ σ(m) + (m月の日数)
としてもよい。各月の日数だが……」
慈道はしばし口を閉じて板書に集中した。
3月:31 ≡ 3
4月:30 ≡ 2
5月:31 ≡ 3
6月:30 ≡ 2
7月:31 ≡ 3
8月:31 ≡ 3
9月:30 ≡ 2
10月:31 ≡ 3
11月:30 ≡ 2
12月:31 ≡ 3
13月:31 ≡ 3
14月:28 ≡ 0
「え? 13月ってなんですか」
すかさず柴山は突っ込んだ。
「ああ、これな。 3 月を基準にしているから、 1 月、 2 月は 13 月、 14 月とみる。こうすると後々公式がすっきりするから違和感があるかも知れんが許容しておいてくれ。深夜1時を25時っていうようなもんだと思って」
「ふーん」
「さてさて、あとは漸化式に当てはめるだけっと」
慈道は黙って板書を続ける。
σ(3) ≡ 0
σ(4) ≡ σ(0) + 3 ≡ 0 + 3 ≡ 3
σ(5) ≡ σ(4) + 2 ≡ 3 + 2 ≡ 5
σ(6) ≡ σ(5) + 3 ≡ 5 + 3 ≡ 1
σ(7) ≡ σ(6) + 2 ≡ 1 + 2 ≡ 3
σ(8) ≡ σ(7) + 3 ≡ 3 + 3 ≡ 6
σ(9) ≡ σ(8) + 3 ≡ 6 + 3 ≡ 2
σ(10) ≡ σ(9) + 2 ≡ 2 + 2 ≡ 4
σ(11) ≡ σ(10) + 3 ≡ 4 + 3 ≡ 0
σ(12) ≡ σ(11) + 2 ≡ 0 + 2 ≡ 2
σ(13) ≡ σ(12) + 3 ≡ 2 + 3 ≡ 5
σ(14) ≡ σ(13) + 3 ≡ 5 + 3 ≡ 1
「いやあ、疲れた」
「こういう計算を見てるとなにか不思議な感じしますね。大学の数学って、凄く大きな数や複雑な式をこねくり回すイメージがあるんですが、この計算は 0 から 6 だけの数しか扱ってなくて、とてもシンプルです」
アリサは興味深そうに言葉をもらす。
「大学の数学にも色々あるけどな。モンスターっていう滅茶苦茶大きな位数の群を研究している人もいるし、昔習ったクイバーって理論は、 k と 0 と矢印ばっかりで、めちゃくちゃ不思議な感じがしたぞ。こんなんで飯食ってる人がいるのかって」
「k ってなんですか?」
「適当な
「……難しそうですね」
体は一般的に大学三年生の後期か、四年生の前期に履修する代数学の一分野である。かの有名なガロア理論は体論に含まれる。
「数学には色々な分野がありすぎると痛感したなあ」
度々入る雑談が、慈道の講義に堅苦しさを拡散しているといえる。
「というわけで、
σ(3) ≡ 0
σ(4) ≡ 3
σ(5) ≡ 5
σ(6) ≡ 1
σ(7) ≡ 3
σ(8) ≡ 6
σ(9) ≡ 2
σ(10) ≡ 4
σ(11) ≡ 0
σ(12) ≡ 2
σ(13) ≡ 5
σ(14) ≡ 1
は覚えてもらうかメモしてもらう。ツェラーって数学者はこの σ(m) ですら m の式で表しているらしいけどな。興味があったらネットで調べてみてくれ」
「ツェラーっと……」
当たり前のように柴山がメモをしていた。
「ここまで分かったことは、 3 月 1 日を 1 日目としたとき、 m 月 d 日を N 日目とすると
N ≡ σ(m) + d mod 7
が成り立つ、ということ。ただし、 1 月と 2 月はそれぞれ 13 月、 14 月とみる」
慈道は二人の様子を見て一息入れる。
「さ、次は
慈道は「Y 年 m 月 d 日は何日目?」と板書する。
「なんで年だけ大文字なんですか?」
柴山がもっともなことを尋ねる。
「すぐに分かる」
「『いずれ』じゃなくて『すぐに』、か」
柴山は満足そうに呟いた。
「では問題。西暦 2000 年 3 月 1 日は何日目だろう」
「ちょうど 2000 年後ですから、 365 × 2000 に閏年の回数を足したものに + 1 したもの、ってことになりますよね」
アリサも積極的に参加してきた。
「うん。ちなみに閏年っていつか知ってる?」
「4 で割れる年ですよね」
特に疑うことなくアリサが答える。
「実はそれは厳密じゃない。俺もついこの前調べるまで知らなかったけどな。閏年ではない年を平年というのだが、
・原則、 4 の倍数の年は閏年とする。
・ただし、 100 の倍数の年は平年とする。
・ただし、 400 の倍数の年は閏年とする。
という三つのルールによって、閏年かそうでないかは定義される。だから、 2000 年ってミレニアム、ミレニアムつって莫迦騒ぎしていたが、 400 年に一回しかないプレミアム閏年だったんだぜ」
「ちなみに先輩は、1999年に地球が滅亡するっていうノストラダムスの予言を信じて、荷造りをして何もないところに避難しようとしていたという噂が……」
「莫迦言え。そん時は小三だぞ。超常現象にはまる前の頃だ。ってそんな話はどうでもいい。ちなみに閏年って、グレゴリオ暦とユリウス暦で定義が違うらしい。十六世から
「慈道さんって本当に物知りですよね。さっきから何も見ずに」
アリサは素直に感心している。確かに教卓の上にある暗号理論入門と書かれたノートは未だ開かれていない。合同式の話題だけでここまでもっている。
「そ、そうかな」
慈道は頭をかいて、ニヤニヤし始めた。
「まあ数学の講義だって、教授は何も見ずにベラベラと喋りながら数式を書きなぐるだろう」
「あまり褒めない方がいいですよ。調子に乗ってセクハラ発言とかするので」
あまり慈道と接点がないアリサは、彼の保護者に近い柴山の言葉を鵜呑みにするしかなかった。
「ふんだ。さて、2000年3月1日までに、閏年による2月29日は何回あったかというと
[2000/4] − [2000/100] + [2000/400] = 500 − 20 + 5 = 485
だけあったことになるな.ここで [ ] は当然ガウスの記号。床関数ともいう。ようは小数点を切り捨てる記号だ。正の整数 a を正の整数 b で割ったときの商は [a/b] で表せるから使い勝手がいい」
「ガウス記号も苦手でした」
アリサが受験勉強のことを惜しむように言った。
「ガウス記号って、偶奇で場合分けが必要な公式を統一するために使ったりする記号なんだけど、こいつを用いて訳の分からない関数を定義して大学入試問題を無理矢理難化させている姿勢は俺はあまり好きではないな。と、いかんいかん。また脱線してしまった」
「もう一時間経ってますよ」
柴山は意地悪そうに言った。
「分かってるって。結局、西暦 2000 年 3 月 1 日は
2000 × 365 + 485 + 1
日目ということになるかな。最後の + 1 は勿論、 1 日の 1 だ。一般に西暦 Y 年に対して、 (Y − 1) 年までの日数の総和は
365Y + [Y/4] − [Y/100] + [Y/400]
となる。ということは Y 年の m 月 d 日までの日数の総和を T(Y, m, d) とすると
T(Y, m, d) ≡ 365Y + [Y/4] − [Y/100] + [Y/400] + σ(m) + d mod 7
となる」
「ん? 先輩、ちょっと話が戻るんですけど、さっきの2000年の話をしていたときって、1999年までの閏年の回数を調べないとおかしくないですか?」
「お、その質問は想定していたが、よく考えろ。 2000 年の 3 月 1 日は、もうすでに 2 月 29 日を迎えているから、 2000 年までの閏年の回数を調べるのが正しい」
「あ……そっか。それもそうですね」
柴山は口元に掌を当てて少し考え込み、再び口を開いた。
「あれ? だけどそうすると、 1 月、 2 月の日付が何日目かを計算するとき、 2 月 29 日はまだ終わってないから、閏年の計算がずれませんか?」
「おお、鋭い。さっき 1 月、 2 月は、 13 月、 14 月で考えるって言ったよな。代わりに Y の値を 1 引いて考える。つまり、 2000 年 1 月を考える場合、 1999 年 13 月として計算するんだ。そうすれば、 2000 年の分の閏年は計算されない」
「はあ、なるほどねえ。面倒臭そうですけど、そうした方が 1 月 1 日を基準にするより利便性があるんですよね」
「そういうこと」
アリサはやや消化不良気味だ。
「鈴木さん、大丈夫?」
「ええ、なんとか……」
「もし分からなくなったらいつでも言ってよ。そこのジャージの女が教えるから」
「あ、はい……」
「あんたが教えるんじゃないんかーい!」
柴山が突っ込んだ。
「別にいいが俺は教職を志望しているお前にも教えることの機会を与えているのだよ。どれだけ噛み砕いて説明できるか……」
「な、なるほど……」
明らかに面倒臭がっている慈道の術中にはまり、柴山は使命感に煽られていた。
「例えば、 2000 年 2 月 28 日は、 3 月 1 日から数えると 365 日目になるじゃない。このとき、 2000 年の分の閏年の分も計算してしまうと……」
柴山はアリサに補足説明を見事に行ってみせた。
慈道は腕を組んで「俺って教え上手だなあ」とでも言いたげに、二人の若い女子大生が数学を学んでいる姿を見守っていた。
「どれ、次に進んでいいかな。さっきは 2000 年でやったから計算は楽勝だったが、 Y = 1777 とかだと 365Y + [Y/4] − [Y/100] + [Y/400] の計算は面倒だ。そこで、西暦を上二桁と下二桁で分離して考える。例えば 1777 だったら
1777 = 17・ 100 + 77
という風にだ。一般に、西暦 Y 年の下二桁を y、上二桁を c とすると
Y = 100c + y (0 ≦ y < 100、c ≧ 0)
と表せる。これに対して 365Y + [Y/4] − [Y/100] + [Y/400] がどう表されるかをみていくわけだ。ここで、ガウス記号は小数部分を切り捨てて整数部分を表す記号だから [10 + 2.5] = 10 + [2.5] という式変形が許される。つまり、整数 a と実数 x に対して
[a + x] = a + [x]
が成り立つ。これに注意すると
[Y/4] = [(100c + y)/4]
= [25c + y/4]
= 25c + [y/4]
同様に
[Y/100] = [(100c + y)/100]
= [c + y/100]
= c + [y/100]
= c + 0
= c
となる。 y/100 は 1 未満だから小数部分を切り捨てると 0 になる点は注意しよう。最後の
[Y/400] = [(100c + y)/400]
= [c/4 + y/400]
についてだが、 c/4 の小数部分は最も大きくて .75 。このとき、 y/400 の値によっては、整数部分への繰り上げに影響しそうだけど、 0 ≦ y < 100 より、 y/400 の小数部分が .25 以上になることはない。ということは、 y/400 が、 [c/4 + y/400] の整数部分への繰り上げに影響することはなく
[Y/100] = [c/4 + y/400] = [c/4]
が成り立つということだ。ここが一番難しい」
柴山とアリサはひそひそ話をして、不明瞭な部分の理解を深めている、と思われる。
「以上をまとめると Y = 100c + y のとき
[Y/4] = 25c + [y/4]
[Y/100] = c
[Y/400] = [c/4]
だから
365Y + [Y/4] − [Y/100] + [Y/400]
= 365(100c + y) + 25c + [y/4] − c + [c/4]
ここで mod 7 で考えると、 365 ≡ 1、 100 ≡ 2、 25 ≡ 4 だったので
365(100c + y) + 25c + [y/4] − c + [c/4]
≡ 1(2c + y) + 4c + [y/4] − c + [c/4]
= 5c + [c/4] + y + [y/4]
となる。ここまでが限界かな。十分シンプルになったと思うが、 mod 7 で考えると
T(Y, m, d)
≡ 365Y + [Y/4] − [Y/100] + [Y/400] + σ(m) + d
≡ 5c + [c/4] + y + [y/4] + σ(m) + d
が結論だな!」
珍しく慈道も声を張り上げて言った。
「ちなみに、忘れてるかも知れんが、 T(Y, m, d) は西暦 0 年 3 月 1 日から西暦 Y 年 m 月 d 日までの日数の総和だ」
「ふう、久々に応用数学って感じです。今やってる環論の講義はわりと抽象的な話が多いので」
柴山はそう言って少し
「どれ、試しに具体計算をしてみよう。ひとまず今日の日付を代入して計算してみ。 Y = 2015 だから、 c = 20、 y = 15 だ」
柴山とアリサのノートには次のような計算がなされていた。
T(2015, 10, 27)
≡ 5・20 + [20/4] + 15 + [15/4] + σ(10) + 27
≡ 100 + 5 + 15 + 3 + 4 + 27
≡ 2 + 5 + 1 + 3 + 4 − 1
≡ 13
≡ 0
「幾つになった?」
「0 と合同です」
先に答えたのはアリサだった。柴山は一歩引いて、できるだけアリサに発言させようとしているのかもしれない。ちなみに柴山が否定しないということは合っているということでもある。
「0 か……今日は火曜日だから、 0 が火曜を表すことになる。日本人の感覚だと、日曜日がカレンダーの左端にあるけど、月曜が一週間の一日目っていうのがある。そこで日曜日を余り 0 のグループにすべく
D(c, y, m, d) = 5c + [c/4] + y + [y/4] + σ(m) + d + 2
とする。これが mod 7 で 0 に合同だったらその日は日曜になる。よし、これを使って柴山の生年月日が何曜日を計算してみよう。確か、 1993 年の 4 月 8 日だったよな」
「はい」
「仏陀と同じ誕生日とは縁起がいいな。 93 ≡ 100 ≡ 2 だから
D(19, 93, 4, 8)
= 5・19 + [19/4] + 93 + [93/4] + σ(4) + 8 + 2
≡ = 5・ 5 + 4 + 2 + 23 + 3 + 1 + 2
≡ = 4 + 4 + 2 + 2 + 3 + 1 + 2
= 26
= 4
だから、木曜日かな?」
柴山はスマートフォンのカレンダーで確認した。
「すごーい! ご名答です」
「大袈裟だなあ」
「確か、先輩は 6 月 28 日でしたよね!」
「よ、よく覚えているな」
「以前、どっちも完全数で縁起がいいって自分で言ってましよ」
「ああ、そうだっけか」
完全数とは、その数以外の正の約数の総和がその数になる自然数のことで、
1 + 2 + 3 = 6
1 + 2 + 4 + 7 + 14 = 28
が、最初と2番目の例である。
「1990 年生まれだから……
D(19, 90, 6, 28)
= 5・19 + [19/4] + 90 + [90/4] + σ(6) + 28 + 2
≡ 5・ 5 + 4 − 1 + 22 + 1 + 0 + 2
≡ 4 + 4 − 1 + 1 + 1 + 0 + 2
≡ 4
あ、奇遇ですねー。私と同じ木曜ですよ」
「そ、そうか。それは良かったな」
無邪気に数学を楽しむ柴山を前に、慈道はあくびをしながら頬が緩むのを誤魔化していた。
「アリサもやってみたら?」
「あ、はい。 1995 年 8 月 24 日なので……」
「柴山と二つ違いか。そりゃそうか。柴山は浪人してるもんな」
「莫迦にしてます?」
柴山の口元は笑っているのだが、目線がきつかった。
「いえいえいえ……」
「え……嘘……」
アリサは珍しく可笑しそうに目を細めた。
「ど、どうしたの?」
「私も木曜日でした。凄い偶然ですね」
「ほんと!」
のりのよい柴山は明るく振舞っているが、慈道は冷静になにかに耽っている。
「木曜日生まれが三人……森三中……うーん」
「あ、あの、無理にかましてこなくていいですからね」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます