筛法求素数
#include <iostream>using namespace std;
const long N = 100000;
long prime[N] = {0},num_prime = 0;
int isnotPrime[N]={1,1};
int main()
{
for (long i=2; i<N; i++)
{
if(!isnotPrime[i])
prime[num_prime++] = i;
for (long j=0; j<num_prime && i*prime[j]<N; j++)
{
isnotPrime[i*prime[j]] = 1;
if (!(i%prime[j]))
break;
}
}
return 0;
}
在网上看到这个代码 可是有一个地方读不懂 就是 if (!(i%prime[j])) 什么意思?
还有就是prime(j)当j=0的时候 那么prime(o)不是等于0么? 0怎么可以作为除数?