- 如果目标是筛选出 小于
n
的所有素数,那么i * prime[j] < n
是正确的。 - 如果目标是筛选出 小于等于
n
的所有素数,那么i * prime[j] <= n
是正确的。
第九行中判断条件
void solve(int n) {
vector<bool> isprime(n + 1, true);//isprime[i]表示第i个数是否为素数
vector<int> prime;//存放的素数
isprime[1] = false;//1不是素数,先将1置为false
for (int i = 2; i < n; i++)
{
//如果i为素数,则将其添加到prime当中
if (isprime[i]) prime.push_back(i);
for (int j = 0; j < prime.size() && i * prime[j] <= n; j++)
{
//不是质数则为false
isprime[i * prime[j]] = false;
//退出条件
if (i % prime[j] == 0) break;
}
}
int cnt = prime.size();
}