'Excel宏代码原创分享,转发请注明来源,作者:王欢为,WX:13772568903。
功能:1.找到第N个素数。
功能:2.做一个由前N个素数组成的数组。
速度:第1E4个素数可以大约1.5~2.5秒出结果104729。第1E5个素数三分钟出结果1299709。更大的数字没有测。
输入格式:
FFSushubiao(正整数),例如:FFSushubiao(10000)
上面格式返回第10000个素数: 104729
FFSushubiao(正整数, 2),例如:FFSushubiao(10000, 2)
上面格式返回前10000个素数组成的数组。
函数代码如下:
Function FFSushubiao(Num1&, Optional ByVal Leixing1zhi4 As Integer = 1)
'Excel宏代码原创分享,转发请注明来源,作者:王欢为,WX:13772568903。
'功能:1.找到第N个素数。
'功能:2.做一个由前N个素数组成的数组。
Dim ii&, jj&
Dim Arr1() As Long
ReDim Arr1(1 To Num1) As Long
Arr1(1) = 2
jj = 3
For ii = 2 To Num1
Arr1(ii) = Arr1(ii - 1)
Biaoji1:
Arr1(ii) = Arr1(ii) + 1
For jj = 1 To ii - 1
If Arr1(ii) Mod Arr1(jj) = 0 Then
GoTo Biaoji1
End If
Next jj
Next ii
If Leixing1zhi4 = 2 Then
FFSushubiao = Arr1
Else
FFSushubiao = Arr1(Num1)
End If
End Function
测试的例子:
Sub ceshi()
Dim qq, tt
tt = Timer
qq = FFSushubiao(10000, 1)
Debug.Print Timer - tt
Debug.Print qq
End Sub