VB求素数问题

来源:百度知道 编辑:UC知道 时间:2024/06/18 02:37:59
Function isprime(x As Integer) As Integer
Dim i As Integer
For i = 2 To x - 1
If x Mod i = 0 Then
Exit For
End If
Next i
If i >= x Then
isprime = 1
Else
isprime = 0
End If

End Function
Private Sub Command1_Click()
Dim x As Integer
For x = 100 To 200
If isprime(x) = 1 Then
Print x;
End If
Next x
End Sub

i >= x是什么意思,哪位能替菜鸟打个比方。这里边I不是永远都比X大吗?

If i >= x Then
isprime = 1
Else
isprime = 0
End If

就是当i大于或者等于x的时候,将isprime标记为1,否则标记为0。(实际上这个变量使用逻辑变量更合适,前者赋值为真,后者为假)

为什么这样?
因为i是前面for循环的自变量,如果在循环中(x被i整除)通过
If x Mod i = 0 Then
Exit For
End If
跳出循环,则i<x,所以就在循环以外标记为isprime为假(即不是素数)
要是正常结束循环,则i至少等于x,即满足循环外的条件,标注isprime为真。

一、简单地说:i >= x是判断是否是素数的唯一条件,如果成立,则是素数,否则就不是。
二、i的取值问题。从循环上看,i从2到 x - 1,所以i只能i<=x。在此过程中,如果出现x被i整除,则x不是素数,此时i<x;如果x都不被i整除,则x是素数,此时i=x;所以你回头再看第一点,也就明白其中的意思了。