如果 1 也算素数的话(否则题名不成立) Private Sub Command1_Click() Dim i, j, k As Integer Dim blGetDate As Boolean Dim A(16) As Integer A(0) = 1357 A(1) = 1537 A(2) = 1573 A(3) = 1753 A(4) = 3157 A(5) = 3517 A(6) = 3571 A(7) = 3751 A(8) = 5137 A(9) = 5173 A(10) = 5317 A(11) = 3571 A(12) = 7153 A(13) = 7351 A(14) = 7513 A(15) = 7531 For i = 0 To 15 For j = 3 To Sqr(A(i)) If A(i) Mod j = 0 Then blGetDate = True Exit For End If Next j If Not blGetDate Then k = k + 1 Debug.Print "素数 "; k; " "; A(i) Else blGetDate = False End If Next i End Sub运行结果: 素数 1 1753 素数 2 3517 素数 3 3571 素数 4 3571 素数 5 7351
再修改,运行结果不变 Private Sub Command1_Click() Dim i, j, k As Integer Dim blGetDate As Boolean Dim A(18) As Integer A(0) = 1357 A(1) = 1537 A(2) = 1573 A(3) = 1753 A(4) = 3157 A(5) = 3517 A(6) = 3571 A(7) = 3751 A(8) = 5137 A(9) = 5173 A(10) = 5317 A(11) = 5371 A(12) = 5713 A(13) = 5731 A(14) = 7153 A(15) = 7351 A(16) = 7513 A(17) = 7531 For i = 0 To 15 For j = 3 To Sqr(A(i)) If A(i) Mod j = 0 Then blGetDate = True Exit For End If Next j If Not blGetDate Then k = k + 1 Debug.Print "素数 "; k; " "; A(i) Else blGetDate = False End If Next i End Sub
Option ExplicitPrivate Sub Command1_Click() Dim SingleNumber(0 To 4) As Integer SingleNumber(0) = 1 SingleNumber(1) = 2 SingleNumber(2) = 3 SingleNumber(3) = 5 SingleNumber(4) = 7
Dim Results() As Integer
Dim length As Integer
Dim temp As Integer
Dim i As Integer, j As Integer, k As Integer, l As Integer
Next iIf length <> 0 Then For i = 0 To UBound(Results) Debug.Print Results(i) Next End If
End Sub '************************************** '判断一个数是否为素数 '************************************* Public Function IsPrimeNumber(ByVal num As Integer) As Boolean If num > 0 Then
IsPrimeNumber = True
If ((num Mod 2) = 0) And (num <> 2) Then IsPrimeNumber = False Exit Function ElseIf (num Mod 3) = 0 And (num <> 3) Then IsPrimeNumber = False Exit Function ElseIf (num Mod 5) = 0 And (num <> 5) Then IsPrimeNumber = False Exit Function ElseIf (num Mod 7) = 0 And (num <> 7) Then IsPrimeNumber = False Exit Function End If End If
Private Sub Command1_Click()
Dim i, j, k As Integer
Dim blGetDate As Boolean
Dim A(16) As Integer
A(0) = 1357
A(1) = 1537
A(2) = 1573
A(3) = 1753
A(4) = 3157
A(5) = 3517
A(6) = 3571
A(7) = 3751
A(8) = 5137
A(9) = 5173
A(10) = 5317
A(11) = 3571
A(12) = 7153
A(13) = 7351
A(14) = 7513
A(15) = 7531
For i = 0 To 15
For j = 3 To Sqr(A(i))
If A(i) Mod j = 0 Then
blGetDate = True
Exit For
End If
Next j
If Not blGetDate Then
k = k + 1
Debug.Print "素数 "; k; " "; A(i)
Else
blGetDate = False
End If
Next i
End Sub运行结果:
素数 1 1753
素数 2 3517
素数 3 3571
素数 4 3571
素数 5 7351
Private Sub Command1_Click()
Dim i, j, k As Integer
Dim blGetDate As Boolean
Dim A(18) As Integer
A(0) = 1357
A(1) = 1537
A(2) = 1573
A(3) = 1753
A(4) = 3157
A(5) = 3517
A(6) = 3571
A(7) = 3751
A(8) = 5137
A(9) = 5173
A(10) = 5317
A(11) = 5371
A(12) = 5713
A(13) = 5731
A(14) = 7153
A(15) = 7351
A(16) = 7513
A(17) = 7531
For i = 0 To 15
For j = 3 To Sqr(A(i))
If A(i) Mod j = 0 Then
blGetDate = True
Exit For
End If
Next j
If Not blGetDate Then
k = k + 1
Debug.Print "素数 "; k; " "; A(i)
Else
blGetDate = False
End If
Next i
End Sub
Dim SingleNumber(0 To 4) As Integer
SingleNumber(0) = 1
SingleNumber(1) = 2
SingleNumber(2) = 3
SingleNumber(3) = 5
SingleNumber(4) = 7
Dim Results() As Integer
Dim length As Integer
Dim temp As Integer
Dim i As Integer, j As Integer, k As Integer, l As Integer
For i = 0 To 4
For j = 0 To 4
If j <> i Then
For k = 0 To 4
If (k <> i) And (k <> j) Then
For l = 0 To 4
If (l <> i) And (l <> j) And (l <> k) Then
temp = SingleNumber(i) * 1000 + SingleNumber(j) * 100 + SingleNumber(k) * 10 + SingleNumber(l)
If IsPrimeNumber(temp) Then
length = length + 1
ReDim Preserve Results(length - 1)
Results(length - 1) = temp
End If
End If
Next l
End If
Next k
End If
Next j
Next iIf length <> 0 Then For i = 0 To UBound(Results)
Debug.Print Results(i)
Next
End If
End Sub
'**************************************
'判断一个数是否为素数
'*************************************
Public Function IsPrimeNumber(ByVal num As Integer) As Boolean If num > 0 Then
IsPrimeNumber = True
If ((num Mod 2) = 0) And (num <> 2) Then
IsPrimeNumber = False
Exit Function
ElseIf (num Mod 3) = 0 And (num <> 3) Then
IsPrimeNumber = False
Exit Function
ElseIf (num Mod 5) = 0 And (num <> 5) Then
IsPrimeNumber = False
Exit Function
ElseIf (num Mod 7) = 0 And (num <> 7) Then
IsPrimeNumber = False
Exit Function
End If
End If
End Function