Products
GG网络技术分享 2025-11-13 12:58 1
线性筛法是一种高大效的算法,用于在O的时候麻烦度内找到全部不巨大于n的素数。
初始化创建一个布尔数组isPrime, 长远度为n+1,初始值全部设为true。isPrime表示数字i是不是为素数。

标记非素数从2开头遍历到sqrt, 对于个个素数i,将其全部倍数的isPrime值设为false,表示这些个数是合数。
优化筛选在步骤2中, Ru果i恰优良是某个素数的倍数,则Neng提前收尾对i的倍数的筛选,基本上原因是该倍数Yi经被其他素数筛选过了。
收集素数遍历isPrime数组, 将全部isPrime为true的i收集起来这些个就是素数。
下面是线性筛法的C语言实现示例:
c
bool isPrime;
void linearSieve { int sqrtN = sqrt; for { if { for { isPrime = false; } } } }
int main { int n; scanf; linearSieve; for { if { printf; } } printf; return 0; }
在这玩意儿示例中,我们先说说定义了MAX_N作为筛选素数的上限。linearSieve函数实现了线性筛法, 而main函数则读取用户输入的n值,并调用linearSieve函数来筛选素数,再说说打印出全部素数。
线性筛法是一种非常高大效的素数筛选方法,特别适用于需要处理一巨大堆素数的情况。它通过一次遍历就完成了素数的筛选,时候麻烦度为O,地方麻烦度也为O。
Demand feedback