B.判断longint范围内的数是否为素数(包含求50000以内的素数表):procedure getprime;var i j:long

行业问题 素数,范围内 已帮助 人

B.判断longint范围内的数是否为素数(包含求50000以内的素数表):

procedure getprime;

var

i,j:longint;

p:array[1..50000] of boolean;

热搜:判断脊髓休克是否结束,不正确的是

答案解析

难度★★☆ 搜索
  • 正确答案:

    begin
    fillchar(p,sizeof(p),true);
    p[1]:=false;
    i:=2;
    while i<50000 do begin
    if p[i] then begin
    j:=i*2;
    while j<50000 do begin
    p[j]:=false;
    inc(j,i);
    end;
    end;
    inc(i);
    end;
    l:=0;
    for i:=1 to 50000 do
    if p[i] then begin
    inc(l);pr[l]:=i;
    end;
    end;{getprime}

    function prime(x:longint):integer;
    var i:integer;
    begin
    prime:=false;
    for i:=1 to l do
    if pr[i]>=x then break
    else if x mod pr[i]=0 then exit;
    prime:=true;
    end;{prime}