Visual Basic 解哥德巴赫猜想

Private Sub Form_Click()
    Dim m As Long
    Dim n As Long
    Dim x As Long
    Dim loopnum As Long '分解的对数
    Dim hangshu As Long '打印的行数
    hangshu = 1
    Randomize
    Do
       x = Int(Rnd * 2000 + 100)
       Debug.Print x
    Loop While (x Mod 2 <> 0)
      x = Val(InputBox("请输入一个偶数"))
        If x Mod 2 <> 0 Then
           MsgBox "请再次输入数字,请注意输入的应该是偶数", vbCritical, "提示"
           Exit Sub
        End If
    Print
    Print "需要分解的数字为:"; x
    Print "--------------------------------------------------------------------------------------------------------"
    For m = 1 To x / 2
        n = x - m
        If sushu(n) And sushu(m) Then
           Print x; "="; m; "+"; n,
           If hangshu Mod 4 = 0 Then Print '每4对输入即换行
           hangshu = hangshu + 1
           loopnum = loopnum + 1
        End If
    Next m
    Print
    Print "--------------------------------------------------------------------------------------------------------"
    Print "总共找到了"; loopnum; "对分解的数"
    
End Sub

Private Function sushu(n As Long) As Boolean '判断一个数是否为素数
    Dim i As Long
    For i = 2 To n - 1
        If n Mod i = 0 Then Exit For
    Next i
    
    If i > n - 1 Then
       sushu = True
    Else
       sushu = False
    End If
End Function

Private Sub Form_Load()
    Me.AutoRedraw = True
End Sub
posted @ 2011-04-20 13:59  wangxue1629  Views(257)  Comments(0)    收藏  举报