素数
最近、"虚数の情緒―中学生からの全方位独学法"(吉田武 著)という本を読んでいます。
率直に言って、序章などで主張されている筆者の思想、姿勢には素直に頷けない点が多いのですが、1章以降の具体的な"数"についての話は面白く、楽しめます。
かなり分厚い本なので、まだ半分も読んでいませんけどね。
この本に影響されて、簡単なプログラムを組んでみました。
Sub Sieve_S() Cells.Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone Dim lngN As Long lngN = 100 'この値までの素数を探す Dim lngSieve() As Long ReDim lngSieve(1 To lngN) Range("A1").Select ActiveCell.Value = lngN Dim i As Long Dim j As Long For i = 1 To lngN If i = 1 Then lngSieve(i) = 0 Else lngSieve(i) = i End If If i Mod 10 = 1 Then ActiveCell.Offset(1, 0).Select End If If i Mod 10 = 0 Then ActiveCell.Offset(0, 9).Value = i Else ActiveCell.Offset(0, (i Mod 10) - 1).Value = i End If Next For i = 2 To Int(lngN / 2) For j = 1 To lngN If j Mod i = 0 Then If i <> j Then lngSieve(j) = 0 End If End If Next Next Range("A2").Select For i = 1 To lngN If lngSieve(i) = 0 Then Selection.Interior.ColorIndex = 38 Selection.ClearContents Else Selection.Interior.ColorIndex = 34 End If If i Mod 10 = 0 Then ActiveCell.Offset(1, -9).Select Else ActiveCell.Offset(0, 1).Select End If Next End Sub
これはEXCELで実行できるVBAマクロです。
そのままコピーしてEXCELのVisualBasicEditorに貼り付ければ使えます。
プログラム中のlngNの値*1を変えると、その値を最大値とする範囲で素数を探して表示します。*2
どうということのないプログラムですが、自分で作って動かしてみたらわりと楽しかったので公開してみました。
簡単なことでも実際に自分の手を動かしてやってみる、というのは大切なことのように思います。