Excelでの素数判定:値が素数かどうかを判断する論理式
この記事では、Excelの内蔵関数を使用してセルの値が素数かどうかを判断する方法を紹介します。
何を実現する計算処理なのか
提供する論理式は、指定したセルの値が素数かどうかを判断し、その結果を真偽値(TRUEまたはFALSE)として返します。2つのバージョンの論理式を提供します(基本版と、LET関数を使用した効率的な版)。
これらの論理式はIF関数や条件付き書式・入力規則に活用することが可能です。
サンプル計算式
基本版
この基本版はExcelの標準関数のみでセルA1が素数であるかを検査します。ただし検査セルを何度も指定する必要があります。
=IF(OR(A1=2, A1=3), TRUE, IF(OR(A1<=1, A1<>INT(A1), MOD(A1,2)=0), FALSE, AND(MOD(A1,ROW(INDIRECT("2:"&INT(SQRT(A1)))))<>0) ) )
以下は上記の式を1行にしたもので、同じ内容です。
=IF(OR(A1=2, A1=3), TRUE, IF(OR(A1<=1, A1<>INT(A1), MOD(A1,2)=0), FALSE, AND(MOD(A1,ROW(INDIRECT("2:"&INT(SQRT(A1)))))<>0)))
LET関数を使用した版
LET関数は最新のExcelで利用可能です。検査セルの指定が一度で済むのでメンテナンス性に優れています。ただしExcel 2019以前のバージョンでは使用できません。
=LET( val, A1, IF(OR(val=2, val=3), TRUE, IF(OR(val<=1, val<>INT(val), MOD(val,2)=0), FALSE, AND(MOD(val,ROW(INDIRECT("2:"&INT(SQRT(val)))))<>0) ) ) )
以下は上記の式を1行にしたもので、同じ内容です。
=LET(V_val,A1,IF(OR(V_val=2,V_val=3),TRUE,IF(OR(V_val<=1,V_val<>INT(V_val),MOD(V_val,2)=0),FALSE,AND(MOD(V_val,ROW(INDIRECT("2:"&INT(SQRT(V_val)))))<>0))))
考えられる注意点
- これらの論理式は、小数や負の数値を入力した場合には`FALSE`を返します。
- 非常に大きな数値を評価する際には計算に時間がかかる可能性があります。
- LET関数はExcelの新しいバージョンでのみ使用可能です。古いバージョンのExcelではこの関数が利用できないため、基本版を使用してください。
コメント