29 lines
804 B
VB.net
29 lines
804 B
VB.net
Option Explicit
|
|
|
|
Dim total As Long, prim As Long, maxPeri As Long
|
|
|
|
Public Sub NewTri(ByVal s0 As Long, ByVal s1 As Long, ByVal s2 As Long)
|
|
Dim p As Long, x1 As Long, x2 As Long
|
|
p = s0 + s1 + s2
|
|
If p <= maxPeri Then
|
|
prim = prim + 1
|
|
total = total + maxPeri \ p
|
|
x1 = s0 + s2
|
|
x2 = s1 + s2
|
|
NewTri s0 + 2 * (-s1 + s2), 2 * x1 - s1, 2 * (x1 - s1) + s2
|
|
NewTri s0 + 2 * x2, 2 * x1 + s1, 2 * (x1 + s1) + s2
|
|
NewTri -s0 + 2 * x2, 2 * (-s0 + s2) + s1, 2 * (-s0 + x2) + s2
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub Main()
|
|
maxPeri = 100
|
|
Do While maxPeri <= 10& ^ 8
|
|
prim = 0
|
|
total = 0
|
|
NewTri 3, 4, 5
|
|
Debug.Print "Up to "; maxPeri; ": "; total; " triples, "; prim; " primitives."
|
|
maxPeri = maxPeri * 10
|
|
Loop
|
|
End Sub
|