エクセルVBAで素数判定をプログラミング【ダウンロード利用可能】

エクセルの標準関数には素数を判定する数式がないので、エクセルでも素数判定できるプログラムを作成しました。ファイルのダウンロードで利用して頂ければ思います。

目次

ファイルのダウンロード

素数判定するファイルはこちらからダウンロードできます。ファイルを利用する方はファイルを開いて「コンテンツの有効化」をクリックしてください。

Book1

使い方

エクセルの標準関数を利用するのと同様の方法で、関数名の引数に素数を判定したいセルを入力します。

素数判定する関数はprimeとしました。

=prime(セル名)

エクセルの使用例としては以下の図のようになります

判定結果は以下の3種類です。

  • -1:100000000より大きい数値で判定できない
  • 0:素数でない
  • 1:素数

A列に数字、B列に判定結果を入力した場合の実行例は以下のようになります。

注意点

このプログラムは素数を素早く判定することを目的としています。すでに素数と確定しているテーブルを利用することで、処理の高速化を行っています。未知の数に対して素数を求めるプログラムとは異なりますのでご了承頂ければと思います。

また、判定する数値の上限は100000000までとしています。

コード

コードは下記のようになっています。素数テーブルサイズが大きいので一部省略しています。

Function prime(x As Long) As Integer

Dim prime_box(1300) As Integer

prime_box(1) = 2
prime_box(2) = 3
prime_box(3) = 5
prime_box(4) = 7
prime_box(5) = 11

 ・・・テーブルを省略・・・

prime_box(1227) = 9949
prime_box(1228) = 9967
prime_box(1229) = 9973
prime_box(1230) = 10007


Dim i As Integer
Dim flag As Integer '-1⇒値オーバー,0⇒素数でない,1⇒素数

flag = -1 '最大入力数をオーバー
If x <= 100000000 Then '入力数が100000000以下の場合

flag = 1 '一旦素数に仮決め
 
 For i = 1 To 1230

    If x Mod prime_box(i) = 0 Then '素数で割り切れる場合
        flag = 0 '素数でない
        Exit For 'for文を抜ける
    End If

    If Int(Sqr(x)) < prime_box(i) Then '判定が終了したら
        Exit For 'for文を抜ける
    End If
       
 Next
  
End If

 If x = 1 Then
    flag = 0
 End If
 
 If x = 2 Then
    flag = 1
 End If

 prime = flag


End Function

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次