线性筛素数……
Program P3006;
const
maxn=1000000;
var
prime:array[1..maxn] of boolean;
p:array[1..maxn] of longint;
t:longint;
a,d,n:longint;
Procedure primeing;
var
i,j:longint;
begin
fillchar(prime,sizeof(prime),false);
t:=0;
prime[1]:=true;
for i:=2 to maxn do
begin
if not(prime[i]) then
begin
inc(t);
p[t]:=i;
end;
for j:=1 to t do
begin
if p[j]*i>maxn then break;
prime[p[j]*i]:=true;
if i mod p[j]=0 then break;
end;
end;
end;
begin
primeing;
readln(a,d,n);
while (a+d+n>0) do
begin
while (n>0) do
begin
if not(prime[a]) then dec(n);
inc(a,d);
end;
writeln(a-d);
readln(a,d,n);
end;
end.
本文介绍了一种高效的素数筛选算法——线性筛素数算法,并通过Pascal语言实现。该算法能在O(n)的时间复杂度内找出指定范围内的所有素数。
1212

被折叠的 条评论
为什么被折叠?



