码迷,mamicode.com
首页 > 其他好文 > 详细

ACM学习之简单素数相关

时间:2020-10-10 16:55:29      阅读:17      评论:0      收藏:0      [点我收藏+]

标签:bsp   复杂度   直接   相关   分析   线性时间   个数   重复   暴力   

1.素数判断。

直接暴力判断,复杂度是根号级别。

 

2.筛选法。

普通筛法,对每个数,将其倍数全部标记。

复杂度是O(n/1+n/2+...+n/n),调和级数,O(nlogn)级别。

 

高级一点的筛法,我们发现,一个合数的倍数会被自己的因子提前标记,所以只需要对素数的倍数进行标记。

复杂度...我忘了怎么分析的了,好像是O(nloglogn)级别的。

 

线性筛法,保证每个数只被筛选一次,这样就可以在线性时间内得到n以内的素数。

基于一个思路:每个数只被它的最大因子筛选。

假设x为某些数的最大因子,必然有z=x*y,首先这个y要小于x,而且y必须是质数,否则就会破坏x为z的最大因子的前提。

当然我们也并不是完全地直接将比x小的所有质数与x相乘来筛,这样依旧会重复。

因为假如比x小的质数大于x的最小的因子,产生代换会多筛一次,所以x只能和不大于自己最小因子的质数相乘。

ACM学习之简单素数相关

标签:bsp   复杂度   直接   相关   分析   线性时间   个数   重复   暴力   

原文地址:https://www.cnblogs.com/lmlysklt/p/13789308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!