指定値より小さくて最も近い非素数を調べるユーザー定義関数

Excelで前の非素数を探索: ユーザー定義関数の紹介

この記事では、Excelで指定された値より小さく、最も近い非素数を見つけるためのユーザー定義関数を紹介します。

この関数は、指定したセルの値より小さくて最も近い非素数を返します。

この関数の特徴

  • 指定したセルの値より小さい最初の非素数を返します。
  • 計算は効率的で、大きな数値でも迅速に結果を返すことができます。
  • Excelの内蔵関数だけでなく、VBAの機能を利用しています。

関数コードの登録の仕方

1. Excelを開き、[開発]タブをクリックします。
2. [マクロ]ボタンをクリックし、VBAエディタを開きます。
3. [挿入] > [標準モジュール]を選択して、新しいモジュールを追加します。
4. 下記のコードをVBAエディタにコピー&ペーストします。ペースト後はVBAエディタを閉じます。

Function PreviousComposite(n As Double) As Double
    Dim isPrime As Boolean
    Dim i As Double, j As Double
    
    If n <= 4 Then
        PreviousComposite = "N/A"
        Exit Function
    End If
    
    i = Application.WorksheetFunction.Floor(n, 1) - 1 ' 小数点を切り捨てて整数にし、1を引く
    Do
        isPrime = True
        For j = 2 To Sqr(i)
            If i Mod j = 0 Then
                isPrime = False
                Exit For
            End If
        Next j
        If Not isPrime And i < n Then
            PreviousComposite = i
            Exit Do
        End If
        i = i - 1
    Loop
End Function

ユーザーは実行時にどんな操作をするのか

関数を使用するには、セルに「=PreviousComposite(セルの位置)」と入力します。例えば、A1セルの値を元に非素数を探索したい場合、「=PreviousComposite(A1)」と入力します。

もしくは「関数の挿入」ボタンから「ユーザー定義」カテゴリ「PreviousComposite」を選んでからA1セルを指定します。

関数を実行すると、指定されたセルの値より小さく、最も近い非素数がそのセルに表示されます。

この計算式はコピー対応です。

使用時の注意点

  • 非常に小さな数値を評価する際には、適切な結果が得られない可能性があります。
  • この関数はExcelのVBA機能を使用しているため、マクロの設定を有効にする必要があります。

コメント