过不了一千万怎么办?
查看原帖
过不了一千万怎么办?
5938
小黑楼主2015/2/27 21:32

这段代码数值都不会超出范围,单独的子程序也是正确的,但是不知道为什么最大到9989899就卡死了,求大神帮忙啊~~~

代码如下:

var
  a,b:longint;
function prime(k:longint):boolean;
  var
    mid,i:longint;
    f:boolean;
  begin
    if k=1 then
      begin
        prime:=false;
        exit;
      end;
    f:=true;
    mid:=trunc(sqrt(k));
    for i:=2 to mid do
      if (k mod i)=0 then
        f:=false;
    prime:=f;
  end;
procedure judge(n:longint);
  var
    s,ss:string;
    len,i:integer;
  begin
    str(n,s);
    len:=length(s);
    ss:='';
    for i:=len downto 1 do
      ss:=ss+s[i];
    if ss=s then
      if prime(n)=true then
        writeln(n);
  end;
begin
  read(a,b);
  if odd(a)=false then
    a:=a+1;
  while a<=b do
    begin
      judge(a);
      a:=a+2;
    end;
end.

2015/2/27 21:32
加载中...