质数的快速筛法

时间复杂度O(n)

int tab[N],num=0;
bool notzhi[N]={1,1};
for(int i=2;i<=N;++i){
	if (notzhi[i]==0)
		tab[num++]=i;
	for(int j=0;j<num&&i*tab[j]<=N;++j){
		notzhi[i*tab[j]]=1;
		if (i%tab[j]==0)
			break;
	}
}

这样子能保证每个合数一定被最小质因子给筛掉,而且仅被筛一次,从而保证复杂度为O(n)

posted @ 2016-03-20 14:39  abclzr  阅读(356)  评论(0编辑  收藏  举报