2017年6月11日日曜日

Excel VBAで数学 1

 なんでも学校でのプログラミングの授業が計画されているそうです。文部科学省のWebサイトを覗いてみたら、なかなか高度な内容だったので、びっくりです。
 先生は大変だろうなぁ、などと思っています。

 それはそれとして、Excel VBAで簡単な数学のプログラムを作ってみました。個人的には、こういうプログラムは教育的だと思っています。

 まずは素数の判定プログラムです。
 999611と999613のように双子の素数を見つけたりすると少し楽しいです。
 実際に実行してみると、計算時間を体感できます。例えば10000桁の素数を探すことがいかに大変かが分かります。素数は無限に存在しますが、その意味を体感している感じです。

 ソースコードは、ご自由にご利用ください。ただし、趣味のプログラムなので、保証はありません。

Option Explicit

'素数を調べる

Public Sub Macro()
    Dim i As Long
   
    For i = 1 To 100
        Sheet1.Cells(i, 1) = i
       
        If isPrime(i) Then
            Sheet1.Cells(i, 2) = "Prime"
        End If
    Next i
End Sub

Public Function isPrime(x As Long) As Boolean
    Dim i As Long
    Dim max As Long
   
    isPrime = True
   
    max = CLng(Math.Sqr(x))
   
    For i = 2 To max
        If x Mod i = 0 Then
            isPrime = False
            i = max
        End If
    Next i
End Function



0 件のコメント:

コメントを投稿