晋峰:vb求100以内的所有素数

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 13:29:24

2 Function CalcPrimes(intPrimeUBound)
3 'intPrimeUBound 是要计算素数的上限值
4 Dim i, j
5 Dim strTmp
6 Dim bitArray
7
8 Redim bitArray(intPrimeUBound + 1)
9
10 For i = 0 To intPrimeUBound
11 bitArray(i) = 1
12 Next
13
14 For i = 2 To CInt(Sqr(intPrimeUBound))
15 If 1 = bitArray(i) Then
16 j = i
17 While j*i <= intPrimeUBound
18 bitArray(i*j) = 0
19 j = j + 1
20 Wend
21 End If
22 Next
23
24 For i = 2 To intPrimeUBound
25 If 1 = bitArray(i) Then
26 strTmp = strTmp & CStr(i) & ","
27 End If
28 Next
29
30 If strTmp <> "" Then
31 strTmp = Left(strTmp, Len(strTmp) - 1)
32 CalcPrimes = Split(strTmp, ",")
33 Else
34 CalcPrimes = ""
35 End If
36
37 End Function

前面是行号, 自己去掉, 返回结果是 intPrimeUBound 以内所有的素数组成的数组

先建一个素数的函数
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

再 建立个按钮 套用函数

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()

k = 0

For n = 2 To 100

flag = "是素数"

For i = 2 To n - 1

If n / i = n \ i Then

flag = "不是素数"

End If

Next i

If flag = "是素数" Then

k = k + 1

If k Mod 5 = 0 Then

Print n‘换行

Else

Print n;‘不换行

End If

End If

Next n

End Sub