标签: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只能和不大于自己最小因子的质数相乘。
标签:bsp 复杂度 直接 相关 分析 线性时间 个数 重复 暴力
原文地址:https://www.cnblogs.com/lmlysklt/p/13789308.html