用筛法求100以内的素数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2:用筛法求100以内的素数(质数)。

分析:素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了……重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。

program p2;

var

a:array [1..100] of integer;

i,j,k:integer;

begin

for i:=1 to 100 do a[i]:=i;

a[1]:=0;i:=2;

while i<=100 do

begin

k:=i;

while k<=100 do

begin

k:=k+i;

a[k]:=0;

end;

{————上面将所有a[i]的倍数清0}

i:=i+1;

while a[i]=0 do i:=i+1;

{————查找接下来的第一个非0数}

end;

for i:=1 to 100 do if a[i]<>0 then write(a[i],' ');

end.

相关文档
最新文档