素数判定

Checking for prime numbers

素数とは、1とその数以外に約数のない 2以上の自然数のことです。

Excel(Microsoft365)で、1つの式(関数を含む)で 素数かどうかを判定する方法について解説しています。(Excelの仕様により、最大で1,048,576の数値までの判定となります。)

例として17は、1と17しか約数のない素数になります。

D5にSEQUENCE関数を入力。

SEQUENCE関数

数列が表示されます。これにより、17を1~17すべての数値で除算する準備を整えます。

数列

E5にMOD関数を入力。

MOD関数

これにより、割り切れる数値と割り切れない数値が分かります。

0が割り切れる数値、それ以外が割り切れない数値です。素数は1とその数以外に約数のないというのが確認できます。

割り切れる数値と割り切れない数値

F5にSORT関数を入力。昇順で並べ替えします。

1とその数以外に約数のないというのは、言い換えると約数は2つしかないということになります。つまり、素数はMOD関数の結果である0が2つある、非素数(素数ではない)は0が3つ以上あるということになります。

SORT関数

F列が昇順で並べ替えされます。

昇順で並べ替え

G5にCHOOSEROWS関数を入力。

CHOOSEROWS関数

配列の3行目を取り出します。素数は1・2行目のみ0であるため、3行目は必ず0ではない数値(1以上)、非素数は3行目は必ず0となります。

配列の3行目

H5にIF関数を入力。0より大きい(1以上)であれば素数、それ以外であれば素数ではないと表示。

IF関数

0より大きい(1以上)ため素数となります。

素数と表示

これらの関数を、1つの式にまとめると以下のようになります。

=IF(CHOOSEROWS(SORT(MOD(B5,SEQUENCE(B5,1,1,1)),1,1,FALSE),3)>0,”素数”,”素数ではない”)

1つの式

Enterで結果が表示されます。

素数と表示

2はSEQUENCE関数で2行しか作成できないため、CHOOSEROWS関数で3行目を取得はできません。エラーとなります。

そのため、仮に2を入力して素数と表示させる場合は、以下のようにIF関数を使います。B5に2と入力すれば 素数と表示し、それ以外は、もう1つのIF関数でCHOOSEROWSから始まる式で計算します。

=IF(B5=2,”素数”,IF(CHOOSEROWS(SORT(MOD(B5,SEQUENCE(B5,1,1,1)),1,1,FALSE),3)>0,”素数”,”素数ではない”))

IF関数のネスト

2と入力して素数と表示されます。

素数と表示

いくつかの数値を入力してオートフィルした結果。

素数の判定

Excelの最大行は1,048,576行となっているため、SEQUENCE関数では、この範囲内での数列までしか作成できません。

そのため、A1やB1など最上段に数値や判定式を入力した場合、素数の判定は概ね1,048,576までとなります。