3 も 7 も 37 も素数
ホテルのルームサーヴィスで昼食代わりの遅い朝食をとってチェックアウト。 充実した三日間で、あれこれ随分と考えがまとまった。 夜は「肩をすくめるアトラス」(アイン・ランド/脇坂あゆみ訳/ビジネス社) を読んでいた。かなり長いので、半分くらいしか読めなかったが。 政治的内容と、 ハーレクインロマンスなみのメロドラマが渾然一体としているところは、 同じ著者の「水源」と同じ。 とは言え、「水源」の方がずっと面白いかな。 河原町の本屋で少し資料を買ってから、午後に帰宅。 かなりメイルがたまっていたので、次々に処理。 夕方、開店早々の時間に予約を入れて、夕食は近所のバーにて。 鯛のキッシュ、豚の白ワイン煮込みなど。 20 時くらいに帰ってくる。
算数(プログラミング)パズル。
今日は 3 月 7 日。
3 も 7 も素数だし、これをくっつけた 37 も素数だ。
こんな日付はけっこうあるのだろうか?
だけど、37 に年の 2008 までくっつけた
200837 は残念ながら素数ではない(7 で割り切れる)。
では、月も日も、月と日をくっつけたものも、
さらに年をくっつけたものも全部素数である日は、
2008 年にあるだろうか?(答は来週の木曜日)。
しかし、2008 自体は素数ではない。
では、年も月も日も、月と日をくっつけたものも、
年と月と日をくっつけたものも全部素数であるような日付は、
21世紀に入ってから今日までにあっただろうか?。
以下は、最初の二つの問題用に私が書いたプログラム。
最後の問題は、この一箇所だけ書き変えれば良い(それはどこ?)。
勿論、自分の好きな言語で書く方が楽しいし、
ひょっとしたら暗算するのが一番楽しいかも知れないし、
少なくとも一番暇つぶしにはなる。
#!/usr/bin/ruby require "date" class Integer def is_prime return true if self == 2 return false if self % 2 == 0 || self < 2 sqrt_of_self = Math.sqrt(self) i = 3 while i <= sqrt_of_self return false if self % i == 0 i += 2 end return true end end checkday = Date.new(2008, 1, 1) 366.times { y = checkday.year m = checkday.month d = checkday.day md = (m.to_s + d.to_s).to_i if m.is_prime && d.is_prime && md.is_prime then print(checkday, ": ") printf("%2d, %2d, %4d are prime\n", m, d, md) ymd = (y.to_s + md.to_s).to_i printf("%d is also prime!\n", ymd) if ymd.is_prime end checkday += 1 }
<< Home