一道pascal题求解 编程序找出面额在1-100间的所有质数

不知道我的解错在哪里,求指点program ex8;var i,a,b,c,d;integer;begin for i:=1 to 100 do for a:=1 to i do begin b:=0; c:=o; b:=i mod a: if b=0 then c:=c+1; if c<=2 then writeln(✀i=✀,i); end;end.
2026年09月21日 13:20
有2个网友回答
网友(1):

首先,笔误两个:
c:=0 而不是 c:=o;
b:=i mod a; 而不是 冒号结尾

逻辑错误:
判断c是否小于等于2 的判断应该放在里层循环之外,c的初始化也是.(b无需初始化)

更改之后的:

program ex8;
var
i,a,b,c,d:integer;
begin
for i:=1 to 100 do begin
c:=0;
for a:=1 to i do
begin
b:=i mod a;
if b=0
then c:=c+1;
end;
if c<=2
then writeln('i=',i);
end;
end.

网友(2):

program ex8;
var
i,a,b,c,d:{这里不是“;”}integer;
begin
for i:=1 to 100 do
begin
c:=0;
for a:=1 to i do
begin
{这两句可以删了,不然你的C永远都是0或1}
b:=i mod a;
if b=0
then c:=c+1;
end;{循环要到这里停止}
if c<=2
then writeln('i=',i);{判断因子有几个}

end;
readln;
end.