做前N个素数表

'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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ggggwhw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值