![会社の近くの公園の桜](https://blogimg.goo.ne.jp/user_image/57/77/0a4c70854b7cb5bd6680dcb348af5e1b.jpg)
![](/img_emoji/!!.gif)
さて、この時期になると、毎朝、コートを着るべきかどうか悩みます。
今週、月曜日は体調最悪だったので、着ました。火曜日は夜冷えるとイヤなので、着ました。両日とも、まだ、来ている人が多かった気がします。
水曜日は、終日暖かいと天気予報で言っていたので、着ませんでした。この日は着ていない人のほうが多かったと思います。
さて、昨日(木曜日)は暖かそうでしたが、風がやや吹いていたので、着て出勤しました。すると、着ている人はほとんどおらず、結構恥ずかしい思いをしました。実際、寒がりの私自身も、この暖かさでは要らなかったなと思いました。
今日は天気が崩れるようです。でも、最高気温は高そうです。どうしようかなぁ。
![にほんブログ村 花ブログへ](http://flower.blogmura.com/img/flower80_15_darkgray.gif)
![ゴトの作品](https://blogimg.goo.ne.jp/user_image/57/83/5004d93aa4a90dc05fe8ef8e99db8841.jpg)
一瞬、泥棒かなとも思いましたが、ネコかタヌキの仕業だろう、という結論に達し、特に気にせずに就寝しました。
朝になってゴトが庭を確認したところ、赤いジュリアンの花が何輪かへし折られていたそうです。どうやらネコがネコパンチした模様です。不憫に思ったゴトは写真のようにしてあげたそうです。白い花はカーネーション、緑の葉はアップルミントです。
![ボニーの作品](https://blogimg.goo.ne.jp/user_image/6e/e8/dbf653d513026a15f9bc76d09b0eb09e.jpg)
ストローと折り紙を使ったボニーオリジナルのバラ、「食卓に飾るとご飯がおいしくなるかなぁ」などとしおらしいことを言っていたそうです。
でも、結構よくできていると思いませんか? 親バカですかね。。。やっぱり。。。
![にほんブログ村 花ブログへ](http://flower.blogmura.com/img/flower80_15_darkgray.gif)
いわずと知れたサイモン&ガーファンクルのヒット曲ですが、もともとはイギリス民謡のようです。私は彼らの現役時代は知りません。1980年代に友人に薦められて聴くようになりました。
この曲には唐突に「Parsley, sage, rosemary and thyme (パセリ、セージ、ローズマリー そしてタイム)」というフレーズが現れます。聴き始めた当時はハーブというものの存在すら知らず、また、前後の歌詞とは全く関係のないものなので、非常に不思議に思っておりました。最近になって、おまじないや呪文のようなものだと知りました。
さて、にわか庭師となった今、ハーブ園芸も仕事のひとつ(笑)なのですが、どうしてもこのフレーズが頭をよぎってしまいます。呪文で軽い魔法にかけられているのかもしれませんね。我が家にはセージ、ローズマリー、タイムはあるのですが、パセリがありません。早く育ててみたいと考える今日この頃です。
なお、スカボロー・フェアはアルバム「パセリ・セージ・ローズマリー・アンド・タイム
」に収録されています。このタイトルがまた、呪文の効果を高めるんですよね。。。
←ハーブティでも飲みながら、チクッとお願いします!
この曲には唐突に「Parsley, sage, rosemary and thyme (パセリ、セージ、ローズマリー そしてタイム)」というフレーズが現れます。聴き始めた当時はハーブというものの存在すら知らず、また、前後の歌詞とは全く関係のないものなので、非常に不思議に思っておりました。最近になって、おまじないや呪文のようなものだと知りました。
さて、にわか庭師となった今、ハーブ園芸も仕事のひとつ(笑)なのですが、どうしてもこのフレーズが頭をよぎってしまいます。呪文で軽い魔法にかけられているのかもしれませんね。我が家にはセージ、ローズマリー、タイムはあるのですが、パセリがありません。早く育ててみたいと考える今日この頃です。
なお、スカボロー・フェアはアルバム「パセリ・セージ・ローズマリー・アンド・タイム
![にほんブログ村 花ブログ ハーブ園芸へ](http://flower.blogmura.com/herb/img/herb80_15.gif)
![オスティオスペルマム](https://blogimg.goo.ne.jp/user_image/32/39/2a69d3505f9b5d6f783cd71e834899e3.jpg)
![ディモルフォセカ](https://blogimg.goo.ne.jp/user_image/3a/7e/0670acf960360a8b8e370ea8ef7241e8.jpg)
以前に、この2つの花について記事を書くと約束しました。それから、随分と長い時間が経ってしまいました。それというのも、妻のゴトが「どうしても私が記事を書きたい
![](/img_emoji/!!.gif)
ところが、ゴトときたら、あーでもないこーでもない、四の五の言って、ちっとも書こうとしません。いくらなんでも待つのも限界なので、やっぱり私が書いてしまいます。
さて、上の2枚の写真、どちらがディモルフォセカでどちらがオスティオスペルマムかわかりますか? 答えはマウスポインタを写真の上に持っていけばわかります。そっくりで区別がつかないですよね。。。
このそっくりの2つの花、実は大きな相違点があります。ディモルフォセカは一年草、オスティオスペルマムは多年草なのです。
ディモルフォセカは夏を越せず、枯れてしまいます。花から種をとっておき、それを秋に蒔いて春の開花を待ちます。
一方、オスティオスペルマムは、花が終わった6月頃に、少し大きめの鉢に植え替えます。水はけの良い土を使うのが良いようです。また、種がとれにくいので、さし芽で増やします。
この2つの花は、下の写真のように夜になると閉じてしまいます。なかなかカワイイですね
![](/img_emoji/!.gif)
![夜のオスティオスペルマム](https://blogimg.goo.ne.jp/user_image/52/24/0ee88c07dbbe9546fe6b8322986a98ae.jpg)
![夜のディモルフォセカ](https://blogimg.goo.ne.jp/user_image/7c/93/7a1b2bb918f3a50f4502bcf5b56c5cd8.jpg)
![にほんブログ村 花ブログ 庭・花壇づくりへ](http://flower.blogmura.com/niwa/img/niwa80_15.gif)
妻が、料理用の篩(ふるい)が欲しいと言うので、インターネットで検索してみました。すると、素数判定アルゴリズム「エラトステネスの篩」というページが目に飛び込んできました。
ソフトウェア開発技術者受験時に、ソートや探索など、様々な古典的アルゴリズムを勉強しましたが、エラトステネスの篩というのは、恥ずかしいことに聞いたことがありませんでした。なんでも、ヘレニズム時代(紀元前200年頃)のギリシア人学者であるエラトステネスが考案したもので、要約すると、以下のようなものらしいです。
与えられた数(n)までの素数を見つける~エラトステネスの篩
① 2からnまでの数値をリストアップする。
② pに2を代入
③ pより大きく、n以下のpの倍数をリストから間引く(つまり、pは間引かない)
④ ③で間引かれなかった数値のうち、pの次に小さい数を、新たなpとする
⑤ pの2乗がn以下の場合、③に戻る
⑥ ここまでで間引かれなかった数が、n以下の素数すべてである
ほほぅ、これは面白そう
にわか庭師は技術屋魂をくすぐられてしまいました。。。では、EXCELのVBA(マクロ)でプログラミングしてみますか。。。
Sub Eratosthenes()
'概要:ユーザから入力された数値以下の素数を求め、A列に表示する
'作者:つんつん
'''計算用の変数宣言
Dim flg() As Boolean '素数かどうかを格納する
'素数ではないと判明するとTrueになる
Dim n As Long 'ユーザが入力した数値を格納
Dim p As Long '未検証の最小の数値を格納
Dim q As Long 'pの倍数(素数でない、除去すべき数)を格納
'''表示用の変数宣言
Dim r As Long '素数出力用添字
Dim s As Long '行用添字
'''初期処理 sheetのクリア
Cells.Select
Selection.ClearContents
Range("A1").Select
'''調べる数値を受け取る
n = CLng(InputBox("入力した数以下の素数をすべて出力します。" _
& "数を入力してください。"))
'''2より小さい素数は存在しないので、終了
If n < 2 Then
MsgBox "該当する素数は存在しません。"
Exit Sub
End If
'''エラトステネスの篩 本処理
p = 2
ReDim flg(n) '素数かどうかのフラグ用の配列の大きさ確定
'初期値は False
Do Until p * p > n '探索終了条件 入力値よりも
'未検証数値の平方が大きくなると終了
If flg(p) = False Then 'フラグがFalseなら
q = p * p 'その倍数を篩にかける
Do Until q > n 'その数の倍数>入力値 になるまで
flg(q) = True '素数ではないと判定
q = q + p '倍率を上げる
Loop
End If
p = p + 1 '次の検証値へ
Loop
'''セルへの表示処理
s = 1 '表示行の初期化
For r = 2 To n '配列を巡回する
If flg(r) = False Then 'フラグがFalse なら素数
Range("A" & s).Select 'A列に書き出し
ActiveCell.FormulaR1C1 = r
s = s + 1 '次の行へ
End If
Next r
'''終了メッセージ
MsgBox "A列に " & n & "以下の素数を表示しました。"
End Sub
これ、ちゃんと動きますよ![](/img_emoji/!.gif)
遊び方は以下のとおりです。
①EXCELを起動して、ツール→マクロ→Visual Basic Editor を選択
②左側のThisWorkBookをダブルクリックして、白い入力画面を表示させる
③Sub Eratosthenes() から End Sub までをコピーして②の画面に貼り付け
④EXCELのSheetに戻って、ツール→マクロ→マクロの実行
⑤ThisWorkbook.Eratosthenes を選択して実行ボタンをクリック
⑥数値をきいてくるので、そこに任意の数値を入力
⑦⑥で入力された数値以下の素数をA列にひたすら表示
…で、何が面白いって? 単なる自己満足です。ただ、情報処理の勉強してる人は、知ってて損はないかもしれませんよ![](/img_emoji/大汗.gif)
←クリックしてみてください!
ソフトウェア開発技術者受験時に、ソートや探索など、様々な古典的アルゴリズムを勉強しましたが、エラトステネスの篩というのは、恥ずかしいことに聞いたことがありませんでした。なんでも、ヘレニズム時代(紀元前200年頃)のギリシア人学者であるエラトステネスが考案したもので、要約すると、以下のようなものらしいです。
与えられた数(n)までの素数を見つける~エラトステネスの篩
① 2からnまでの数値をリストアップする。
② pに2を代入
③ pより大きく、n以下のpの倍数をリストから間引く(つまり、pは間引かない)
④ ③で間引かれなかった数値のうち、pの次に小さい数を、新たなpとする
⑤ pの2乗がn以下の場合、③に戻る
⑥ ここまでで間引かれなかった数が、n以下の素数すべてである
ほほぅ、これは面白そう
![](/img_emoji/!.gif)
Sub Eratosthenes()
'概要:ユーザから入力された数値以下の素数を求め、A列に表示する
'作者:つんつん
'''計算用の変数宣言
Dim flg() As Boolean '素数かどうかを格納する
'素数ではないと判明するとTrueになる
Dim n As Long 'ユーザが入力した数値を格納
Dim p As Long '未検証の最小の数値を格納
Dim q As Long 'pの倍数(素数でない、除去すべき数)を格納
'''表示用の変数宣言
Dim r As Long '素数出力用添字
Dim s As Long '行用添字
'''初期処理 sheetのクリア
Cells.Select
Selection.ClearContents
Range("A1").Select
'''調べる数値を受け取る
n = CLng(InputBox("入力した数以下の素数をすべて出力します。" _
& "数を入力してください。"))
'''2より小さい素数は存在しないので、終了
If n < 2 Then
MsgBox "該当する素数は存在しません。"
Exit Sub
End If
'''エラトステネスの篩 本処理
p = 2
ReDim flg(n) '素数かどうかのフラグ用の配列の大きさ確定
'初期値は False
Do Until p * p > n '探索終了条件 入力値よりも
'未検証数値の平方が大きくなると終了
If flg(p) = False Then 'フラグがFalseなら
q = p * p 'その倍数を篩にかける
Do Until q > n 'その数の倍数>入力値 になるまで
flg(q) = True '素数ではないと判定
q = q + p '倍率を上げる
Loop
End If
p = p + 1 '次の検証値へ
Loop
'''セルへの表示処理
s = 1 '表示行の初期化
For r = 2 To n '配列を巡回する
If flg(r) = False Then 'フラグがFalse なら素数
Range("A" & s).Select 'A列に書き出し
ActiveCell.FormulaR1C1 = r
s = s + 1 '次の行へ
End If
Next r
'''終了メッセージ
MsgBox "A列に " & n & "以下の素数を表示しました。"
End Sub
これ、ちゃんと動きますよ
![](/img_emoji/!.gif)
遊び方は以下のとおりです。
①EXCELを起動して、ツール→マクロ→Visual Basic Editor を選択
②左側のThisWorkBookをダブルクリックして、白い入力画面を表示させる
③Sub Eratosthenes() から End Sub までをコピーして②の画面に貼り付け
④EXCELのSheetに戻って、ツール→マクロ→マクロの実行
⑤ThisWorkbook.Eratosthenes を選択して実行ボタンをクリック
⑥数値をきいてくるので、そこに任意の数値を入力
⑦⑥で入力された数値以下の素数をA列にひたすら表示
…で、何が面白いって? 単なる自己満足です。ただ、情報処理の勉強してる人は、知ってて損はないかもしれませんよ
![](/img_emoji/大汗.gif)
![にほんブログ村 資格ブログ スキルアップへ](http://qualification.blogmura.com/skillup/img/skillup80_15.gif)