遍历不重复的勾股数
刘永富原创
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
输出结果:



浙公网安备 33010602011771号