线性筛素数,出了问题求帮忙
#include <iostream>#include<cstdio>
#include<string>
#include<cstring>
#include<iomanip>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
const int maxn=10000;
int check[maxn],prime[maxn];
int main(void){
int tot=0,i,j;
memset(check,0,sizeof(check));
for(i=2;i<=maxn;i++){
if(!check[i]) prime[tot++]=i;
for(j=0;j<tot && i*prime[j]<=maxn;j++){
check[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
printf("prime[0]=%d\n",prime[0]);
return 0;
}
当maxn比较大的时候(10000及以上),为什么prime[0]等于1了?循环是从2开始的,prime[0]应该总是等于2才对