2017年6月11日日曜日

Excel VBAで数学 5

 Excel VBAを使った簡単な数学プログラミングの続きです。

 今回はピタゴラス数です。三平方の定理、ピタゴラスの定理と呼ばれるやつです。
 前回のEuclidの互除法を利用しています。
 (3,4,5) (5,12,13)くらいは有名ですが、(777,464,905)なんかは覚えている人は稀でしょう。

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

Option Explicit

'ピタゴラス数

Public Sub Macro()
    Dim i As Long
    Dim m As Long
    Dim N As Long
    Dim row As Long
   
    row = 1
   
    For i = 1 To 100
        m = 1
        N = 2 * i - 2
       
        Do While m < N
            Sheet1.Cells(row, 1) = m
            Sheet1.Cells(row, 2) = N
           
            If Euclidean(m, N) = 1 Then
                Sheet1.Cells(row, 3) = N * N - m * m
                Sheet1.Cells(row, 4) = 2 * m * N
                Sheet1.Cells(row, 5) = N * N + m * m
            End If
           
            m = m + 1
            N = N - 1
            row = row + 1
        Loop
    Next i
End Sub

Public Function Euclidean(x As Long, y As Long) As Long
    Dim a As Long
    Dim b As Long
    Dim r As Long
   
    If x < y Then
        a = y
        b = x
    Else
        a = x
        b = y
    End If
   
    r = a Mod b
   
    Do While 0 < r
        a = b
        b = r
        r = a Mod b
    Loop
   
    Euclidean = b
End Function


0 件のコメント:

コメントを投稿