您的位置:首页 > 其它

Section 1.5 SuperPrime Rib

2010-08-23 14:58 246 查看
开头只可能是2,3,5,7
结尾只可能是 1,3,7,9
知道了这个 递归求解即可 这是一道练递归的好题
{
ID: yaoyuan4
PROG: sprime
LANG: PASCAL
}
Program sprime;
const
  fx : array[1..4] of longint = (2, 3, 5, 7);
  fy : array[1..4] of longint = (1, 3, 7, 9);
  inf = 'sprime.in'; outf = 'sprime.out';
var
  n : longint;
Procedure init;
  begin
   assign(input, inf); reset(input);
   readln(n);
   close(input);
  end;
Function ok(x : longint) : boolean;
  var
   i : longint;
  begin
   for i := 2 to trunc(sqrt(x)) do
    if x mod i = 0 then exit(false);
   exit(true);
  end;
Procedure vip(x, op : longint);
  var
   i, t : longint;
  begin
   if op = n then begin writeln(x); exit; end;
   for i := 1 to 4 do
    begin
     t := x * 10 + fy[i];
     if ok(t) then
      vip(t, op+1);
    end;
  end;
Procedure work;
  var
   i : longint;
  begin
   assign(output, outf); rewrite(output);
   for i := 1 to 4 do
    vip(fx[i], 1);
   close(output);
  end;
begin
  init;
  work;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: