[素数筛][容斥原理]:埃拉托斯特尼筛法

求解问题:不超过一个给定正整数N的素数的个数

方法介绍:

根据合数的性质:一个合数可以被一个不超过它的平方根的素数整除

这里举例N=100:

介绍:为了找出不超过100的素数个数,首先根据合数的性质可以知道:100的合数一定有一个不超过10的素因子。因为小于10的素数仅有:2,3,5,7,因此不超过100的素数就是这4个素数以及那些大于1和不超过100且不被2,3,5,7整除的正整数。

应用容斥原理:我们令P1:整数能被2整除   P2:整数能被3整除    P3:整数能被5整除  P4:整数能被7整除。

于是答案就是:4+N[{P1}'{P2}'{P3}'{P4}']

关于N[{P1}'{P2}'{P3}'{P4}']解释:同时不满足P1,P2,P3,P4性质的个数

ps:已知结论:在1-N之间,有\left \lfloor \frac{N}{x} \right \rfloor个能被x整除的数

由于存在99个比1大且不超过100的正整数,所以由容斥原理说明:

N[{P1}'{P2}'{P3}'{P4}']=99-N[P1]-N[P2]-N[P3]-N[P4]+N[P1P2]+N[P1P3]+N[P1P4]+N[P2P3]+N[P2P4]+N[P3P4]-N[P1P2P3]-N[P1P2P4]-N[P1P3P4]-N[P2P3P4]+N[P1P2P3P4]

不超过100(且大于1)并被{2,3,5,7}的子集中的所有素数整除的正整数个数是\left \lfloor \frac{100}{N} \right \rfloor,其中N是这个子集中的素数之积。(因为任意两个素数都没有公因子)。因此:

N[{P1}'{P2}'{P3}'{P4}']=99-\left \lfloor \frac{100}{2} \right \rfloor-\left \lfloor \frac{100}{3} \right \rfloor-\left \lfloor \frac{100}{5} \right \rfloor-\left \lfloor \frac{100}{7} \right \rfloor+\left \lfloor \frac{100}{2\times 3} \right \rfloor+\left \lfloor \frac{100}{2\times5} \right \rfloor+\left \lfloor \frac{100}{2\times7} \right \rfloor+\left \lfloor \frac{100}{3\times5} \right \rfloor+\left \lfloor \frac{100}{3\times7} \right \rfloor+\left \lfloor \frac{100}{5\times7} \right \rfloor-\left \lfloor \frac{100}{2\times3\times5} \right \rfloor-\left \lfloor \frac{100}{2\times3\times7} \right \rfloor-\left \lfloor \frac{100}{2\times5\times7} \right \rfloor-\left \lfloor \frac{100}{3\times5\times7} \right \rfloor+\left \lfloor \frac{100}{2\times3\times5\times7} \right \rfloor

ans: 

N[{P1}'{P2}'{P3}'{P4}']=99-50-33-20-14+16+10+7+6+4+2-3-2-1-0+0=21

因此存在:4+N[{P1}'{P2}'{P3}'{P4}']=25个不超过100的素数

ps:有趣的是,这个算法求解素数个数的时间复制度为:O(1).....qwq

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值