算法题:纯质数

题目来源: 第十二届蓝桥杯国赛Java B组试题        

 

题目解析
此题按照正常的思路应该是遍历数值n,找到n所有的素数然后在对的出来的所有素数各个数字进行判断,属于2,3,5,7即可。

但此题给的n=20210605,一个八位的数字,滋补小铺 如果单纯按照上面的思路进行实现,计算时间将会变得非常漫长。

这里我们可以使用埃氏筛法,快速找出n中所有的素数,然后在找出来的素数中找出纯素数即可。

什么是埃氏筛法?

埃拉托斯特尼筛法,简称埃氏筛或爱氏筛,丰告网是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。

如:n=10,则有数组:

{1,2,3,4,5,6,7,8,9,10}

因为1不是素数,所以给1加上删除标记:

{ 1 ,2,3,4,5,6,7,8,9,10}


从2开始遍历:

{ 1 ,2,3,4,5,6,7,8,9,10}

然后将后面可以被2整除的数都加上删除标记,如4,6,8,10都是可以被2整除的,所以需要加上删除标记:

{ 1 ,2,3,4,5,6,7,8,9,10}

接着遍历3:

{ 1 ,2,3,4,5,6,7,8,9,10}

由于6和9都是可以被3整除的,因此也需要加上删除标记:

{ 1 ,2,3,4,5,6,7,8,9,10}

此时我们就已经得出了10内的所有素数~!

{2,3,5,7}

接下来我们只需要运用这个思路到具体的代码中即可~!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值