首页上一页 1 下一页尾页 2 条记录 1/1页
《visual basic 编程宝典》中第五章中的实战检验二“验证歌德巴赫猜想”中好像编程方向存在错误!
发表在VB答疑区
2011-08-27
是否精华
是
否
版块置顶:
是
否
我个人认为程序没有验证歌德巴赫猜想,而是用了哥德巴赫猜想的结论,得出了输出了结果。
编程宝典提供的程序:
Private Sub Command1_Click()
Dim a As Long, b As Long, c As Long, e As Long, g As Long
Dim d As Boolean
If IsNumeric(Text1.Text) Then a = CLng(Text1.Text)
If a Mod 2 = 0 And a >= 6 Then
For b = 2 To a
d = False
For c = b - 1 To 2 Step -1
If b Mod c = 0 Then
Exit For
Else
e = a - b
For g = e - 1 To 2 Step -1
If e Mod g = 0 Then
d = False
Exit For
End If
d = True
Next g
End If
If d = True Then Exit For
Next c
If d = True Then
Label2.Caption = "结果:符合!" & a & "=" & e & "+" & b
Exit For
Else
Label2.Caption = "结果:不符合"
End If
Next b
End If
End Sub
我读了这段程序以后,感觉运行过程是这样:程序先找到一个比6大的偶数(b),然后检查一下这个偶数能不能比它小1的数整数(c),不能整除的话,就验证(e=a-b)是不是素数,如果是的话就输出结果,根本就没有验证b是不是素数,这样的话就应用了歌德巴赫猜想。应用的过程是这样的:先由用户输入一个比六大的偶数,这个偶数减去一个素数,得出的必定是一个素数。
我个人感觉不对后,尝试着写了一段验证歌德巴赫猜想程序,不知道对不对,请指正,程序如下:
Private Sub Command1_Click()
Label3.Caption = ""
Dim a&, b&, c&, d&, e&, f&
Dim g As Boolean
Dim h As Boolean
If IsNumeric(Text1.Text) Then a = CLng(Text1.Text)
If a Mod 2 = 0 And a > 6 Then
b = a / 2 + 1
For c = 2 To b
For d = c - 1 To 2 Step -1
If c Mod d = 0 Then
g = True
Exit For
End If
g = False
Next d
If g = False Then
e = a - c
For f = e - 1 To 2 Step -1
If e Mod f = 0 Then
h = True
Exit For
End If
h = False
Next f
End If
If (g = False And h = False) Then Exit For
Next c
If (h = False And g = False) Then
Label3.Caption = "结果:符合!" & a & "=" & c & "+" & e
Else
Label3.Caption = "结果:不符合"
End If
Else
MsgBox "输入的数据不合法", 64, "错误提示:"
End If
End Sub