(Excel)数値が素数かどうかを判定する

 Excelで、数値が素数なのかどうかを区別する方法についてです。

  • MOD関数とSEQUENCE関数などを組み合わせて、数値が素数かどうかを判定することができます。

手順

f:id:accs2014:20200215161035p:plain:right:w450

 B2:B14の範囲に3から15の数値が並んでいます。
 ここでC2セルに次のように入力します。

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

 SEQUENCE関数を使って「2」から「B2セルの値の平方根(を超える最も小さい整数)」までの整数を生成しています。そしてMOD関数を使ってB2セルの値をこれらの整数で割った余りを求め、MIN関数により余りのうち最も小さい値を求めています。
 結果が0であれば(自身より小さい数値で割り切れた、つまり約数があったということですので)素数でないということになりますし、1であれば素数ということになります。

 ただし、この式では2(素数)に対し0を返し、そこだけは正しくない結果となりますので注意が必要です
 また、SQRT(B2)のところは本来SQRT(B2)-1で足りるのですが3以下の値に対しエラーになることと、式の長さを考慮してこうしています。

f:id:accs2014:20200215161039p:plain:right:w250

 式を確定すると結果は「1」となりました。
 つまりB2セルの「3」は素数と判定されました。

f:id:accs2014:20200215161043p:plain:right:w500

 さらに式を下方にコピーした結果です。