筛法中for循环写成这个样子
for(int i=2;(i<=sqrt(M)) && (primes[i]==1);++i)
{
for(int j=2*i;j<=M;j=j+i)
primes[j] = 0;
}
竟然没有想到for循环第二个条件一旦不符合就会跳出,所以&&后的条件应该放到循环内部去!有时候小bug真是让人很难想通!
筛法中for循环写成这个样子
for(int i=2;(i<=sqrt(M)) && (primes[i]==1);++i)
{
for(int j=2*i;j<=M;j=j+i)
primes[j] = 0;
}
竟然没有想到for循环第二个条件一旦不符合就会跳出,所以&&后的条件应该放到循环内部去!有时候小bug真是让人很难想通!