以下是引用片段: Private Function sushu(ByVal 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 then sushu=True End Function
很显然,实际上,我们可以改进上面
For i = 2 To n – 1
为:
For i = 2 To int(sqr(m))
这样可以很好的提高效率。
以上判断是否为素数的代码务必识记!
应用举例
求100-200之内素数。
以下是引用片段: Private Sub Command1_Click() Dim j As Integer For j = 100 To 200 If sushu(j) = True Then Print j End If Next j End Sub
以下是引用片段: Private Sub Command1_Click() Dim j As Integer Dim m As Long, n As Long For j = 2 To 10000 If sushu(j) = True Then If pf(j, m, n) = True Then List1.AddItem j & "=" & m & "+" & n End If End If Next j End Sub Private Function pf(ByVal shu As Long, m As Long, n As Long) As Boolean Dim i As Long For i = 1 To shu - 1 If (Sqr(i) = Int(Sqr(i))) And (Sqr(shu - i) = Int(Sqr(shu - i))) Then pf = True m = i n = shu - i Exit Function End If Next End Function
以下是引用片段: Option Explicit Private Sub Command1_Click() Dim I As Integer, flg As Boolean For I = 1001 To 9999 Step 2 Call sup_prime(I, flg) If flg Then Debug.Print I