首页 > 其他分享 >筛法

筛法

时间:2023-01-04 21:56:50浏览次数:46  
标签:right log 筛法 复杂度 mathcal left

筛法是重要的数论基础,介绍一下\(Eratosthenes\)和\(Euler\)筛法,还有线性筛求\(\varphi\)函数和\(\mu\)函数。

\(Eratosthenes\)筛法

也就是我们常说的埃氏筛法。
时间复杂度:\(\mathcal{O}\left(n\log\log n\right)\)
空间复杂度:\(\mathcal{O}\left(n\right)\)

原理

这是小学五年级下册的数学书,图中框出的两句话就是两种筛法思想。

我们来看黄框的思想,概括来说就是对每个数做一次素性检验。众所周知,素性检验最简单的写法是\(\mathcal{O}\left(\sqrt{n}\right)\)的,,所以总共需要\(\sum\limits_{i=1}^{n}\sqrt{i}\)(式子的展开)次计算,可见时间复杂度不优。
红框的思想就是埃筛的思想,对于每一个数标记它的倍数,我们顺序循环,如果一个数被循环到时还没被标记,那么它就是质数,这个思想很聪明,它的时间复杂度是\(\mathcal{O}\left(n\log\log n\right)\)的(OI_wiki上的证明+Mertens'Proof of Mertens'Theorem

我不会证,所以放一些参考资料。
在实际实现中,用\(bitset\)的效率比用\(bool\)数组高,详见OI_wiki上的数据测试,效率貌似比\(Euler\)筛要快。

\(Code\):

const int N=1e8+5;
bitset<N>bs;
ll prime[N],tot=0; 
void Eratosthenes(int n){
	bs[0]=bs[1]=true;
	for(ll i=2;i<=n;i++){
		if(!bs[i]){
			prime[++tot]=i;
			if((ll)(i*i)<=n){
				for(ll j=i*i;j<=n;j+=i){
					bs[j]=true;
				}
			}
		}
	}
}

标签:right,log,筛法,复杂度,mathcal,left
From: https://www.cnblogs.com/jd122/p/17026102.html

相关文章

  • 用筛法求之N内的素数。(Java)
    解题思路:申请一个数组,从1-N初始化从第二个数开始,(2是素数),并且用循环把该数的倍数的数置为0然后访问下一个不是1的数(一定为素数),重复上面一个步骤在循环中把不是0......
  • 反演与筛法
    本文大量参考了:《反演与筛法》马耀华OI中(?)常用数论函数求和法的大致描述、zzt求和法的简化版,negiizhao1积性函数与反演我们先给出一些关于数论函数的基本定义。......
  • 素数筛法-欧拉筛-个人理解
    素数筛法-欧拉筛-个人理解素数筛选有两种流派,一种是埃氏筛法,一种是欧拉筛,由于埃氏筛法很简单,而且效率没有欧筛效率高。因此本文介绍欧拉筛。本文用另一种角度讲解为何在i......
  • 每日一题1--埃氏筛法学习
    我们今天要介绍的埃拉托斯特尼算法就是他发明的用来筛选素数的方法,为了方便我们一般简称为埃式筛法或者筛法。埃式筛法的思路非常简单,就是用已经筛选出来的素数去过滤所有......
  • 筛法瞎写
    看见APJifengc在写min25筛发现我这个东西都不会了。赶紧复习了一把去写点题。写一个更一个。loj6682梦中的数论答案显然\(\frac12\sum_{i=1}^n\binom{d(i)}{2}=\frac......
  • 素数筛法及其优化策略
    暴力算法寻找素数的效率是底下的,可以通过素数筛法来在一个自然数表中标记处素数。Eratosthenes筛法首先是Eratosthenes筛法,基本方法就是首先排除所有大于2的偶数,然后从3......
  • 数组~筛法求素数
    题目描述用筛法求之N内的素数。 用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列,1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后......
  • 牛客竞赛数学专题—整数分解与筛法
    题目链接A.青蛙的约会B.SumofConsecutivePrimeNumbersC.PrimeDistanceD. PrimeLandE. X-factorChainsA.青蛙的约会statement:两只......
  • CF776B Sherlock and his girlfriend 筛法
    一道略显思维的筛法题Sherlockandhisgirlfriend题面翻译题目描述Sherlock有一个新女朋友。现在情人节就要到了,他想送给她一些珠宝。他买了几件首饰。第\(i\)件......
  • 质数筛法
    埃式筛原理:如果x是质数,那么x的倍数2x,3x…nx一定不是质数输入一个数n,就可以知道1-n中有多少个质数:intn; intret=0; cin>>n; int*prime=newint[......