用集合和筛法求素数哪里错了varshu:set of 2..100;i,i2:longint;beginshu:=[2..100];for i:=2 to 100 dobeginif i in shu thenbeginwrite(i,' ');for i2:=1 to 50 dobeginif i*i2 in shu then shu:=shu-[i*i2];end;end;end;writeln;end.
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/01 03:56:37
![用集合和筛法求素数哪里错了varshu:set of 2..100;i,i2:longint;beginshu:=[2..100];for i:=2 to 100 dobeginif i in shu thenbeginwrite(i,' ');for i2:=1 to 50 dobeginif i*i2 in shu then shu:=shu-[i*i2];end;end;end;writeln;end.](/uploads/image/z/3647553-33-3.jpg?t=%E7%94%A8%E9%9B%86%E5%90%88%E5%92%8C%E7%AD%9B%E6%B3%95%E6%B1%82%E7%B4%A0%E6%95%B0%E5%93%AA%E9%87%8C%E9%94%99%E4%BA%86varshu%3Aset+of+2..100%3Bi%2Ci2%3Alongint%3Bbeginshu%3A%3D%5B2..100%5D%3Bfor+i%3A%3D2+to+100+dobeginif+i+in+shu+thenbeginwrite%28i%2C%27+%27%29%3Bfor+i2%3A%3D1+to+50+dobeginif+i%2Ai2+in+shu+then+shu%3A%3Dshu-%5Bi%2Ai2%5D%3Bend%3Bend%3Bend%3Bwriteln%3Bend.)
用集合和筛法求素数哪里错了varshu:set of 2..100;i,i2:longint;beginshu:=[2..100];for i:=2 to 100 dobeginif i in shu thenbeginwrite(i,' ');for i2:=1 to 50 dobeginif i*i2 in shu then shu:=shu-[i*i2];end;end;end;writeln;end.
用集合和筛法求素数哪里错了
var
shu:set of 2..100;
i,i2:longint;
begin
shu:=[2..100];
for i:=2 to 100 do
begin
if i in shu then
begin
write(i,' ');
for i2:=1 to 50 do
begin
if i*i2 in shu then shu:=shu-[i*i2];
end;
end;
end;
writeln;
end.
用集合和筛法求素数哪里错了varshu:set of 2..100;i,i2:longint;beginshu:=[2..100];for i:=2 to 100 dobeginif i in shu thenbeginwrite(i,' ');for i2:=1 to 50 dobeginif i*i2 in shu then shu:=shu-[i*i2];end;end;end;writeln;end.
你这个思路太混乱了,同时也是错误的.筛法不是那样筛的.集合也不正确.
给你提供个常用的思路:
从2开始,对一个数n进行整除检验.一个数如果有个因数,那么对应的一定会有另一个因数.这两个因数的关系,肯定是一个小于或等于这个数的开平方,另一个大于或等于这个数的开平方.检验n时,检验到√n即可.比如检验10000的因数,只需要从2检验到100就行了.