用集合和筛法求素数哪里错了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.
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/11 23:24:17
用集合和筛法求素数哪里错了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就行了.