遍历不重复的勾股数

刘永富原创

import math
for n in range(1,100):
    for m in range(n+1,100,2):
        if(math.gcd(m,n)==1):
            if(m/n<(1+math.sqrt(2))):
                print(m*m-n*n,2*m*n,m*m+n*n)
            else:
                print(2*m*n,m*m-n*n,m*m+n*n)

 

Sub Test()
    Dim a As Integer, b As Integer, c As Integer
    Dim i As Integer, j As Integer
    Dim m As Integer, n As Integer
    i = 2: j = 2
    For n = 1 To 50
        For m = n + 1 To 50 Step 2
            If Application.WorksheetFunction.Gcd(m, n) = 1 Then
                If m / n < 1 + Sqr(2) Then
                    a = m * m - n * n: b = 2 * m * n: c = m * m + n * n
                    ActiveSheet.Range("A" & i).Resize(, 5).Value = Array(m, n, a, b, c)
                    i = i + 1
                Else
                    a = 2 * m * n: b = m * m - n * n: c = m * m + n * n
                    ActiveSheet.Range("H" & j).Resize(, 5).Value = Array(m, n, a, b, c)
                    j = j + 1
                End If
            End If
        Next m
    Next n
End Sub

输出结果:

image

 

image

 

posted @ 2025-11-14 13:40  ryueifu  阅读(78)  评论(0)    收藏  举报