質問: vba 素数判定のプログラムについて
回答: If i Mod j <> 0 Then Cells(i, 1).Value = i End If ここの部分、割り切れなかっらセルに記入するようにしてありますが、 例えば i が10のとき、2から9までの数で割っていきますが、9では割り切れないのでセルに記入されます。 つまりすべての数が(i-1)では割り切れないので、全ての数が素数と判定されてしまいます。 問題文では、InputBox で入力するようになっているようですが、 2~100までを一覧にしたいようなので、問題分に従ってちょっと工夫すると次のようになります。 Sub AAA() Dim j As Long, i As Long Dim fFound As Boolean Cells.Clear For i = 2 To 100 fFound = False '見つかったかどうかの印・・・一旦Falseにしておく 'For ループを用いて 2 から[読み込んだ値-1]までの整数値で For j = 2 To i - 1 '読み込んだ値を割っていき、そ の余りが0(すなわちその数で割り切れた)であれば If i Mod j = 0 Then '0であれば '素数ではない旨を表示して Cells(i, "A") = i Cells(i, "B") = "素数ではない" fFound = True '見つかったという印を付ける '処理を終了する。 Exit For End If Next j '一方、For ループ中では割り切れる数が見つからなかった場合、 If fFound = False Then 'False であれば見つからなかったということである '素数である旨を表示して処理を終了 する。 Cells(i, "A") = i Cells(i, "B") = "素数である" End If Next i End Sub