こんにちは!
一案です。
↓の画像のように別Sheet(右側がSheet2とします)に素数表を作成しておきます。
(とりあえず1000以下の素数のみとしています)
次に画面左側がSheet1とすると、
Sheet1のSheet見出し上で右クリック → コードの表示 → VBE画面(カーソルが点滅しているところ)に
↓のコードをコピー&ペースト → Excel画面に戻りA列に数値を入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
Dim i As Long, j As Long, cnt As Long, buf As String, wS As Worksheet
If Intersect(Target, Range("A:A")) Is Nothing Or Target.Count > 1 Then Exit Sub
Set wS = Worksheets("Sheet2")
With Target
If Not IsNumeric(.Value) Then Exit Sub
If .Value Mod 1 = 0 And .Value <> "" Then
Application.ScreenUpdating = False
For j = 1 To wS.Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Range("D1") = .Value
If .Value Mod wS.Cells(i, j) = 0 Then
Do While Cells(Rows.Count, "D").End(xlUp) Mod wS.Cells(i, j) = 0
Cells(Rows.Count, "E").End(xlUp).Offset(1) = wS.Cells(i, j)
Cells(Rows.Count, "D").End(xlUp).Offset(1) = _
Cells(Rows.Count, "D").End(xlUp) / Cells(Rows.Count, "E").End(xlUp)
cnt = cnt + 1
buf = buf & wS.Cells(i, j) & "×"
Loop
End If
Next i
Next j
End If
If Len(buf) > 2 Then
.Offset(, 1) = Left(buf, Len(buf) - 1)
End If
.Offset(, 2) = cnt
End With
Range("D:E").Clear
Application.ScreenUpdating = True
End Sub 'この行まで
※ D・E列を作業用の列として使用していますので、C・D列は使っていない状態にしておいてください。
※ 素数がSheet2の素数表にあれば画像のように表示されると思います。
※ 極端に大きな数値の場合はネットで調べるともっと多くの素数表ができると思います。m(_ _)m