切换到宽版
  • 9961阅读
  • 1回复

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

上一主题 下一主题
离线cjping02
 
只看楼主 正序阅读 0 发表于: 2008-03-17
这是一道用集合筛选求质数的题目,程序如下:
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.

请高手指点。
直接下载运行 jihesushu1.txt (1 K) 下载次数:65
离线cjping02
只看该作者 1 发表于: 2008-03-18
请教高手。。。
快速回复
限100 字节
 
上一个 下一个