30日間1日1本マクロ生活、14日目です。
マクロを書く準備は、0日目に記事を書きました。
マクロを書く準備早速マクロを書こうと思ったんですが、マクロって何?食えんの?って人もいると思うんで、丁寧に行こうかな、と。マクロってのは、通常は人間の手でやるような作業を、プログラムを書くことで機械に自動的にやらせるってことです。Excelの場合はVBA(Visual Basic for Application)という言語を使ってマクロを書きます。まずはその準備を。Excelを起動すると、ワークシートが現れます。ここでキーボードの「ALT+」を押してください。はキーボードの上方にあるファンクションキーの11番です。すると、このウィンドウが開... 0日目 マクロを書く準備をしよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか? |
素数の判定
昨日は、エラトステネスの篩で100以下の素数だけを表に残すということをやりました。
30日間1日1本マクロ生活、13日目です。マクロを書く準備は、0日目に記事を書きました。エラトステネスの篩中学校や高校の数学で、エラトステネスの篩について学習しませんでしたか? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 301から30までの整数を表にしてみました。まず1を消します。 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30次に2を残し、... 13日目 エラトステネスの篩(ふるい)を知ってますか?【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか? |
そのときに残った表がこれです。
この表に残っているのは、素数だけです。
そして、意図的に数字6個で改行をしています。
6で割って1余る数と5余る数
どうですか。2と3以外の素数は、6で割って1余る数と、6で割って5余る数だけが残っているのが分かりますか?
そりゃそうですよね。素数というのは、1と自分自身以外では割り切れない数です。
6の倍数は、当たり前ですけど6で割り切れます。
6で割って2余る数は、偶数です。2で割り切れます。
6で割って3余る数は3の倍数です。3で割り切れます。
6で割って4余る数は、偶数です。2で割り切れます。
ですから、素数の可能性があるのは6で割って1余る数と5余る数だけなんです。
自分より小さい全ての数で割り切れなければ
自分自身よりも小さい全ての数で割り切れなければ、その数は素数です。
でも、全ての数を試す必要はありません。
確認するのは2と3と、そして6で割って1余る数、5余る数だけでいいんです。
今日はコード無しで
今日はマクロを書きません。しくみだけの説明で終わります。
素数の判定については、自然数
- 2なら素数
- 2でなくて2で割り切れるなら素数でない。
- 3なら素数
- 3でなくて3で割り切れるなら素数でない。
- 6で割って1余る数、5余る数で割り切れるかどうか、次々に調べていく。
以下の全ての6で割って1余る数、5余る数で割り切れなければ素数。
これをマクロで書けば、素数の判定ができます。
そして、明日書くマクロは「Sub」ではなく「Function」で始まるマクロを書こうと思っています。
よかったら、予習してみて下さい。
Excelは便利
悔しいですが、Excelは便利です。
Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。
マクロを書くようになると、Excelからは離れられないですね。
30日間、頑張ります。
マイクロソフト 2014-10-17