【求助】新人求助
pascal吧
全部回复
仅看楼主
level 9
幽惘兮 楼主
新人一枚,做题目时有一道题老是错误,却总找不出错。求改正[乖]
const
n=255;
var
sieve,primes:set of 1..n;
next,j:integer;
begin
sieve:=[2..n];
primes:=[];
next:=2;
repeat
while not(next in sieve) do next:=next+1;
primes:= primes + [next];
j:=next;
while j<=n do
begin
sieve:= sieve – [j] ;
j:= j+next;
end;
until sieve= [] ;
for next:=2 to n do
if (next in primes) then write(next:4);
end.
2014年07月25日 10点07分 1
level 9
幽惘兮 楼主
原题:
http://oi.sipxhsy.cn:8080/oj/ShowProblem?problemid=d096
编制用筛法求1-n(n≤255)以内素数的程序。
分析:由希腊著名数学家埃拉托色尼提出的所谓“筛法”,步骤如下:
①将所有候选数放入筛中;
②找筛中最小数(必为素数)next,放入集合primes中;
③将next的所有倍数从筛中筛去;
④重复②~④直到筛空。
编程时,用集合变量sieve表示筛子,用集合primes存放所有素数。
要求:填空后,提交到szNOI测试。
const
n=255;
var
sieve,primes:set of 1..n;
next,j:integer;
begin
sieve:=[2..n];
primes:=[];
next:=2;
repeat
while not(next in sieve) do next:=next+1;
primes:= ;
j:=next;
while j<=n do
begin
sieve:= ;
j:= ;
end;
until sieve= ;
fornext:=2 to n do
if (next in primes) then write(next:4);
end.
2014年07月25日 10点07分 2
level 11
为何要用[]集合呢,用布尔数组表示集合好处明显很多
2014年07月25日 10点07分 4
因为是初学,所以是老师要求[委屈]
2014年07月25日 10点07分
回复 幽惘兮 :有什么样的错误呢
2014年07月25日 11点07分
求指点[乖]
2014年07月25日 11点07分
回复 幽惘兮 :很抱歉,应该是我太弱了,我没发现在n=255时的错误
2014年07月25日 11点07分
level 12
貌似没有错误,但为什么是next:4,直接空格不可以吗……
   --有一种美好,叫做【二次元】
2014年07月25日 11点07分 5
这是二楼的原题 规定的
2014年07月26日 00点07分
回复 幽惘兮 :我还运行了一下,应该没有错【吧】
2014年07月26日 01点07分
哦哦,谢谢
2014年07月26日 01点07分
level 1
n=255,求1..n,n不应该是读入的嘛.....【我表示我不懂】
2014年07月26日 02点07分 6
n是已经规定为255
2014年07月26日 11点07分
1