memset(check,false,sizeof check); int tot = 0; for(int i = 2;i<=N;++i) { if(!check[i]) prime[tot++] = i; for(int j = 0;j<tot;++j) { if( i * prime[j] > N ) break; check[ i * prime[j] ] = true; if( i % prime[j] == 0 ) break; } }
int is_prime[10000000]; void find(int n) { //memset(is_prime,1,sizeof(is_prime)); for(int i=2;i<=n;i++) is_prime[i]=1; for(int i=2;i*i<=n;i++) if(is_prime[i]) for(int j=i*i;j<=n;j+=i) is_prime[j]=0; }