晋峰: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