14日目 素数の判定【30日間1日1本マクロ生活】
30日間1日1本マクロ生活、14日目です。
マクロを書く準備は、0日目に記事を書きました。
素数の判定
昨日は、エラトステネスの篩で100以下の素数だけを表に残すということをやりました。
そのときに残った表がこれです。
この表に残っているのは、素数だけです。
そして、意図的に数字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