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 件のコメント:
コメントを投稿