bool visit[n];
void getprime(int n) //n是想要得到素数的范围
{
visit[0] = 1;
visit[1] = 1; //0和1都不是质数
for (long long i = 2; i < n; i++) {
if (!visit[i]) //若visit[i]是质数
for (long long k = i; i*k < n; k++) //i*k可能会越界
visit[i*k] = 1; //visit[i] 为0则是素数。
}
}注意:这里判断的是下标是否为素数。
如果想要得到一个存有素数的数组,可以重新开一个,在if判断后加一个else即可。
本文介绍了一种使用布尔数组实现的素数筛选算法。通过遍历和标记的方式,该算法能够高效地找出指定范围内所有的素数。需要注意的是,该算法直接在数组中标记合数而非素数,并且适用于较小范围内的素数求解。
326

被折叠的 条评论
为什么被折叠?



