p2203.pas
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 71 行
PAS
71 行
PROGRAM p2203;
VAR
n,m,d,i :Integer;
prime :array[1..10000]of Boolean;
add :array[1..1000]of Boolean;
puss :array[1..1000]of Integer;
find :Boolean;
PROCEDURE makePrime;
var
i,j :Integer;
begin
fillchar(prime,sizeof(prime),1);
prime[1]:=false;
for i:=1 to 10000 do
if prime[i] then
for j:=2 to 10000 div i do
prime[i*j]:=false;
end;
PROCEDURE Search(dep:Integer);
var
sum :Integer;
i,j :Integer;
flag :Boolean;
begin
if dep=m-n+2 then find:=true;
if dep>m-n+2 then exit;
if find then exit;
for i:=n to m do
if not add[i] then
begin
flag:=true;
sum:=i;
for j:=1 to d-1 do
if dep>j then
begin
sum:=sum+puss[dep-j];
if prime[sum] then
begin
flag:=false;
break;
end;
end;
if flag then
begin
puss[dep]:=i;
add[i]:=true;
search(dep+1);
if find then exit;
add[i]:=false;
end;
end;
end;
BEGIN
makeprime;
readln(n,m,d);
while (n<>0)or(m<>0)or(d<>0) do
begin
fillchar(add,sizeof(add),0);
find:=false;
Search(1);
if find then for i:=1 to m-n do write(puss[i],',');
if find then writeln(puss[m-n+1]) else
writeln('No anti-prime sequence exists.');
readln(n,m,d);
end;
END.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?