筛法
概念
筛选法,是古希腊数学家 提出的一种针对自然数列中的自然数而实施的筛选法,其作用为求一定范围内的质数。
这是一个很经典的算法,其贯穿所谓“质数数的倍数一定是合数”的理念,筛选出一定范围内的素数。
此算法主要步骤如下
- 排除 (将1设置为非质数)
- 循环变量 从 开始遍历到 ,若 为质数,则嵌套第二重循环将 的倍数设置为非质数,如此重复
筛法有些许小优化,本文就不一一赘述了。
程序
program Eratothenes;
Var flag:array[1..1000005] of boolean;
n,i,j:longint;
Begin
read(n);
fillchar(flag,sizeof(flag),1);
flag[1]:=false;
for i:=2 to trunc(sqrt(n)) do
Begin
if not flag[i] then
Begin
continue;
end;
end;
end.