已有23人关注
《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
分享到:
精彩评论 2
学分: LV1
2011-08-31
沙发
感谢您阅读我公司图书 此程序就是在验证哥德巴赫猜想是否正确

岳玉志
学分:0 LV1
TA的每日心情
开心
2021-07-29 10:26:14
2011-09-03
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
感谢您阅读我公司图书 此程序就是在验证哥德巴赫猜想是否正确


[/FIELDSET]

回复:但是你再好好看一下书上提供的程序,原程序是利用了歌德巴赫猜想,来验证哥德巴赫猜想。书上提供的原程序是,先提供一个大于6的偶数A,然后A从比它小1的数B开始减,直到的到一个素数C,然后就把就把B,C输出,这里根本么有验证B到底是不是,素数,而是利用哥德巴赫猜想,来确定B是一个素数。
举个例子,让验证1+1=2,你总不能说因为2-1=1,所以1+1=2吧?
  
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照