永发信息网

用VB验证哥德巴赫猜想

答案:1  悬赏:30  手机版
解决时间 2021-05-01 07:18
  • 提问者网友:椧運幽默
  • 2021-04-30 20:51

Private Function prime(m As Long)
Dim f As Boolean
f = True
If m > 3 Then
For i = 1 To Sqr(m)
If m Mod i = o Then f = False: Exit For
Next
End If
prime = f
End Function

这个地方,为什么要用到Sqr(m),还有后面为什么用next(想问一下i

是可以省略么),还有最后为什么将f的值赋给prime?

Private Sub Command1_Click()
Dim n, x, y As Long
n = Val(Text1.Text1)
If n < 6 Or n Mod 2 <> 0 Then
MsgBox "必须输入大于6的偶数"
Cancel = True
Else
For x = 3 To n / 2 Step 2
If prime(x) Then
y = n - x
If prime(y) Then
Text(2).Text1 = x & "+" & y
Exit For
 End If
 End If
 Next
 End If
 Text1.SelStart = 0
 Text1.SelLength = Len(Text1.Text)
 End Sub

还有这里的If prime(x) Then,意思应该是如果函数运行么?我经常看到if p then (p是Boolean),是不是也是省略形式,即为f p= true then ?谢谢了。

 

 

最佳答案
  • 五星知识达人网友:春色三分
  • 2021-04-30 22:11

用到Sqr(m)可以减少循环的次数,你如果要用m其实也是可以的


    素数的判断原则就是除了1和其本身之外,都不被两者之间的任何整数整除(1除外),所以判断一个数是不是素数,按原理来说是应该循环m次的。


    但是还有一个原理,那就是,任意一个整数如果不被小于它的二次方根整除,那么就一定不会被大于它的二次方根整除,不信你可以举个例子:


    比如说17,是不可能被小于sqr(17)的2、3、4整除的,那么就不会被5、6、……、16整除


所以用sqr(m)可以很有效的减少循环次数,使得代码运行效率大大提高



还有后面为什么用next与用next i是一样的,i可以省略


prime:是函数名,最后用prime= f就是将结果传值给函数,因为f为Boolean类型数据,所以最后结果是函


    数prime返回TRUE或者FALSE


If prime(x) Then  意思是如果prime(x)返回为TRUE,那么就执行then下一行的语句,比如prime(7)就返回true,你说的没错,这个是省略形式,就相当于:


if prime(x)=true then

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯