时间复杂度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)
时间复杂度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)
转载于:https://www.cnblogs.com/abclzr/p/5297758.html
2450
574

被折叠的 条评论
为什么被折叠?