弦数个数

来源:百度知道 编辑:UC知道 时间:2024/06/06 13:24:26
若某整数平方等于某两个正整数的平方之和的正整数为弦数
求[121,200]
我写的
Dim a As Long, b As Long, c As Long, m As Long
m = 0
For a = 2 To 200
For b = 2 To 200
For c = 121 To 200
If c = Sqr(a ^ 2 + b ^ 2) And a > b Then m = m + 1
Next c
Next b
Next a
Print m
调试得61
而网上说是40
哪位大哥告诉我错在哪?
回答满意一定把分补上

程序有重复的,另外效率太低了
重复的在: 比如145^=100^2+105^2=17^2+144^2,这样就算了两次了
我这个,只循环了8959次,你的循环了200*200*80=320'0000次
改进了一下,你看看
Private Sub Form_Click()
Dim c As Integer, a As Single, b As Single,m as integer
For c = 121 To 200
For a = 2 To Sqr(0.5) * c
b = Sqr(c ^ 2 - a ^ 2)
If Int(b) = b Then
m = m + 1
exit for
End If
Next
Next
Print m
End Sub

修改理由:有重复的记录。
比如:c a b
185 148 111
185 153 104
185 175 60
185 176 57
修改如下:
Dim a As Long, b As Long, c As Long, m As Long
m = 0
For c = 121 To 200
For a = 2 To 200
For b = 2 To 200
If c = Sqr(a ^ 2 + b ^ 2) And a > b Then m = m + 1: GoTo Exitloop
Next b
Next a
Exitloop:
Next c
Prin