关键词搜索

源码搜索 ×
×

用VB验证哥德巴赫猜想

发布2020-10-09浏览1285次

详情内容

“本节课程我们来用VB验证哥德巴赫猜想。即,任一大于6的偶数都可写成两个素数之和”

01

界面设计

在这里插入图片描述

界面比较简单,按照上图设计界面即可。

02

思路分析

从哥德巴赫猜想的内容:任意一个大于6的偶数都可以用两个素数相加得到,我们可以用循环的方法来解决这个问题。

即,把一个偶数分解为两个整数,并验证这两个整数是否为素数,如果这两个数都是素数的话,那么就证明该偶数可以被分解为两个素数之和。我们只需要利用循环,确保遍历了所有的拆解即可。

举个例子,10这个偶数可以被拆解为:2+8,3+7,4+6,5+5一共4种拆解。我们只需要逐一的去判断这4种拆解中,有没有都是素数的,有的话则验证成功,那么也不需要继续往下验证了。

03

代码设计

首先我们根据之前素数判断的课程,编写一个判断输入的数字是否为素数的函数过程,以方便重复调用,具体代码如下:

Function isPrime(num As Long) As Boolean 
    Dim i&
    Dim flag As Boolean
    flag = True
    For i = 2 To num - 1
        If num Mod i = 0 Then
            flag = False
            Exit For
        End If
        DoEvents
    Next i
    If flag Then
        isPrime = True
    End If
End Function

    然后,编写主程序,即按钮的单击事件:

    Private Sub Command1_Click()
        Dim num As Long, i As Long
        num = Val(Text1)
        If IsNumeric(num) = False Then MsgBox "请输入大于6的偶数": Exit Sub
        If num <> Int(num) Then MsgBox "请输入大于6的偶数": Exit Sub
        If num <= 6 Then MsgBox "请输入大于6的偶数": Exit Sub
        If num Mod 2 <> 0 Then MsgBox "请输入大于6的偶数": Exit Sub
        For i = 2 To num - 2
            DoEvents
            If isPrime(i) And isPrime(num - i) Then
                MsgBox "符合哥德巴赫猜想,因为:" & vbCrLf & num & "=" & i & "+" & num - i & vbCrLf & "" & i & "" & num - i & "都是素数"
                Exit For
            End If
        Next i
    End Sub
    

      需要注意的是,1并不能算严格意义上的素数,因此我们拆解的循环是从2开始,而不是1。

      04

      程序运行

      运行程序,输入一个大偶数,单击按钮,即可弹出验证结果,输入的偶数越大则验证的时间会越长,如果输入的数大于Long数据类型的最大值,则会出错。

      在这里插入图片描述

      相关技术文章

      点击QQ咨询
      开通会员
      返回顶部
      ×
      微信扫码支付
      微信扫码支付
      确定支付下载
      请使用微信描二维码支付
      ×

      提示信息

      ×

      选择支付方式

      • 微信支付
      • 支付宝付款
      确定支付下载