如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1086

来自"NOCOW"

跳转到: 导航, 搜索

素数刷选素数

var
  i,j,k,l,m,n,x,y:longint;
  f:array[1..15000]of longint;
  t:boolean;
begin
  f[1]:=2;n:=1;
  for i:=2to 15000do begin
    m:=f[n];t:=false;
    while not t do begin
      inc(m);
      for j:=1to n do begin
        if m mod f[j]=0
           then break;
        if j=n
           then t:=true;
      end;
    end;
    inc(n);f[n]:=m;
  end;
  readln(n);
  for i:=1to n do begin
    readln(m);
    writeln(f[m]);
  end;
end.


VAR
  f:array [1..163841] of boolean;
  prime:array [1..15000] of longint;
  i,m,n,t:longint;
  j,k,p:int64;
BEGIN
  t:=1;
  prime[1]:=2;
    for i:=1 to 81920 do
      BEGIN
        k:=i+i+1;
          if not f[k] then
            BEGIN
              j:=k;
              inc(t);
              prime[t]:=k;
                while true do
                  BEGIN
                    p:=j*k;
                      if p>163841 then break;
                    f[p]:=true;
                    inc(j,2);
                  END;
            END;
      END;
  readln(m);
    for i:=1 to m do
      BEGIN
        readln(n);
        writeln(prime[n]);
      END;
END.
const
  maxp=165000;
var
  p:array [2..maxp] of boolean;
  a:array [1..16000] of longint;
  i,j,k:longint;
begin
  fillchar(p,sizeof(p),true);
  for i:=2 to trunc(sqrt(maxp)) do
    if p[i] then
      begin
        j:=i+i;
        while j<=maxp do
          begin
            p[j]:=false;
            inc(j,i)
          end;
      end;
  k:=0;
  for i:=2 to maxp do
    if p[i] then
      begin
        inc(k);
        a[k]:=i
      end;
  read(k);
  for i:=1 to k do
    begin
      read(j);
      writeln(a[j])
    end;
end.
个人工具