マスログ

2020/09/24

考えてみよう!Excelを使った素数の判定法!


 こんにちは。和からの数学講師の岡本です。以前ご紹介しました「ウラムの螺旋シリーズ」第3弾です。

集計だけじゃない!?Excelを使ったアートの世界!

やってみよう!Excelを使ったウラムの螺旋の書き方

前回Excelを使った「ウラムの螺旋」の描き方の中で、「素数かどうかを判定する関数」を「呪文」としてお話しました。

=IF(●=2,1,IF(MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))=0,””,MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))))

今回はこの「呪文」について詳しくお話をしていきたいと思います。
※ただし、ここで解説する「SEQUENCE関数」は、2020年9月現在Office 365でのみ使用可能な関数です。今後実装される予定だそうです。

1.そもそも素数とは?

 素数とは簡単にいうと、「1と自分自身でしか割れない数」のことです。つまり、数を素因数分解したときの最小単位。そのため素数は「数の原子」なんて言われ方もします。素数といえば、素数グラスが一時期話題になりました。私岡本のデザインです。どなたでも購入可能となっています!(購入はこちらから)

割れない素数グラス

では、ある数が与えられたとき、その数が素数かどうかを判定してみましょう。

2.素数を判定しよう

 例えば101について考えます(101が素数なのは自明ですが、素数だとわからな設定で進めていきます)。まず「小さい数から順番に割ってみる」というのがもっとも自然かつシンプルです。つまり小さい数からどんどん割ってみて、全部割り切れなかったら素数ということになります。
では101について実際に試してみましょう。1で割っても意味がないので2からはじめていきます。101はもちろん2では割り切れません。3でもダメです。2でダメだったので4でも当然ダメですね。5でもダメ…と続いていきますが、これを101までやらなくてはいけないでしょうか?
 答えはNoです。例えば、24=4×6=6×4です。これは\(\sqrt{24}\)を境に掛け算のペアが同じであることを示します。他の例として、37で考えましょう。37は、2,3,4,5,6で割りきれません。しかし、7,8と考えなくてもいいのです。7×6=42なので、もし7で割り切れたら、6までの数で割り切れたはずだからです。以上から、ある数が素数であることを確かめるには2から、その数の平方根付近まで確かめれば十分だということがわかりました。101の場合、\(\sqrt{101}>\sqrt{100}=10\)なので、少なくとも2~11までの数で確かめればいいのです。

3.「呪文」の意味

ではいよいよExcelの関数について解説いたします。まず、基礎となるのは「SEQUENCE関数」です。これは、「=SEQUENCE(行数,列数,初期値)」という引数になります。例えば「SEQUENCE(10,1,2)」とすると、「初期値2から10行まで、1列に数字を並べる」ということになります。

そこで、「SEQUENCE(SQRT(101),1,2)」とすると「初期値2から\(\sqrt{101}\)行まで、1列に数字を並べる」となります。ここで行数は\(\sqrt{101}\)の整数部分である「10行」が採用されます。さらに、101を並べた数で割った余りを出力するのが「MOD(101,SEQUENCE(SQRT(101),1,2))」となります。こうすると、101を2,3,4,…,11で割った余りが並びます。

もしこのうち1つでも割り切れるものがあれば、余りの中に「0」が登場します。逆にどれでも割り切れない場合は「1」が必ず最小値として現れます(ただし、元の数が2でないとします)。そこで余りたちの中の最小値を出力する関数

=MIN(MOD(101,SEQUENCE(SQRT(101),1,2)))

を考えます。この値が0であれば「2、または合成数」、1であれば「2以外の素数」となるわけです!つまり一般に2以外の数●に対して

=MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))

の結果により●が素数かどうか判別できます!さあ、最後の仕上げとして、例外の「2」の対応をします。これはつぎのようにIF関数を使えば大丈夫です。

=IF(●=2,1, MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))

これは、「●が2であれば1を。そうでなければMIN(MOD(●,SEQUENCE(SQRT(●),1,2)))を出力する」ということを意味します。こうすることで、どんな数●でも「合成数であれば0、素数であれば1」となるような関数が出来上がりました。本質的な部分は以上ですが、見た目を重視するため、さらに0の場合を「“”(空白)」にする関数として

=IF(●=2,1,IF(MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))=0,””,MIN(MOD(●,SEQUENCE(SQRT(●),1,2)))))

を使って出力しています。これで「呪文」の完成です!

5.さいごに

いかがでしたでしょうか。Excelも工夫次第で素数判定を行うことができます。今回はその応用として「ウラムの螺旋」を描くのに利用しました。このように、Excelを使った数学アートに関しては以前のマスログで軽くご紹介しました。

集計だけじゃない!?Excelを使ったアートの世界!

Excelを使ったExcelアートに関する無料セミナーも開催しておりますので、興味のある方は是非ご参加ください!

Excelアート超入門

和からではご自身のペースで学びたいことを学びたいだけ学ぶことができます。算数や数学の苦手意識克服、お仕事で使う計算から実務に役立つデータ分析まで、幅広く対応いたします。ご興味がある方はぜひ一度無料セミナー、無料個別カウンセリングにご相談ください。

<文/岡本健太郎>

数学教室和(なごみ)」では算数からリーマン予想まで、あなたの数学学習を全力サポートします。お問い合わせはこちらから。お問い合わせページへ

カテゴリー

記事一覧

Instagram

Facebook

Twitter