Sieve of Eratosthenes时间复杂度的感性证明

上代码。

#include<cstdio>
#include<cstdlib>
#include<cstring>

#define reg register

const int MAXN=100000;
bool tf[MAXN+10];
int cnt=0;

void work(){
	memset(tf,1,sizeof(tf));tf[1]=0;
	for(reg int i=2;i<=MAXN;++i){
		++cnt;
		if(!tf[i]) continue;
		for(reg int j=i+i;j<=MAXN;j+=i){
			tf[j]=0;
			++cnt;
		}
	}
}
int main(){
	work();
	printf("%d",cnt);
}

结论:Sieve of Eratosthenes\text{Sieve of Eratosthenes} 的时间复杂度为 O(nloglogn).O(n\log\log n).

posted @ 2019-04-28 16:38  TeacherDai  阅读(119)  评论(0)    收藏  举报