切换到宽版
  • 5530阅读
  • 3回复

请教高手:为什么这题老提示“范围检查出错” [复制链接]

上一主题 下一主题
离线cjping02
 
只看楼主 倒序阅读 0 发表于: 2008-03-18
这是一道用集合筛选求质数的题目,程序如下:
const
  n=200;
var
  s,primes:set of 2..n;
  procedure main;
    var p,c:2..400;
    begin
      s:=[2..n];
      primes:=[];
      p:=2;
      c:=2;
      repeat
        while not (c in s) do p:=p+1;
        while not (p in s) do
          begin
            p:=p+1;
          end;
        primes:=primes+[p];
        c:=p;
        while c<=n do
          begin
            s:=s-[c];
            c:=c+p;
          end;
      until s=[];
    end;
  procedure print;
    var i:2..200;
        j:integer;
    begin
      j:=0;
      for i:=2 to 200 do
        if i in primes then
                        begin
                          write(i:5);
                          j:=j+1;
                          if (j mod 10=0) then writeln;
                          end;
  end;
begin
  main;
  print;
end.

请高手指点。
离线sharpland
只看该作者 1 发表于: 2008-03-23
一般范围出错都是数组赋值的时候,你的下标超过定义的范围了。。
离线phoenix
只看该作者 2 发表于: 2008-03-29
不负责就{$R-}
离线cjping02
只看该作者 3 发表于: 2008-03-31
THS!我再看看!
快速回复
限100 字节
 
上一个 下一个