一道跑不了的程序……为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/13 02:23:08
program zhishu;
var a,b,x,i,n:integer;
begin
for i:=1 to 100 do
begin
b:=0;
a:=1;
repeat
b:=b+1;
if b<>0 then x:=1 mod b;
if x=0 then a:=0;
until b=i;
if a=1 then
begin
write(i:4);
n:=n+1;
if n mod 10=0 then writeln;
end;
end;
end.
到底哪里错了?(这是一个找质100内质数的东东,10个换行。虽然没有发现问题,却没有输出,在TP跑不了……但在FREEpascal却可以。为什么?)

太囧了。。。直接贴下来报错是全角和半角的“;”问题
解决后在fp下实测扔无输出。。。
没看懂你写的什么。。
求素数何须如此麻烦。。。
program oo;
var
i,j,k:longint;
f:boolean;
begin
for i:=1 to 100 do
begin
f:=false;
for j:=2 to trunc(sqrt(i))+1 do
if i mod j=0 then begin f:=true;break;end;
if f=false then
write(i:4);
end;
end.

程序如下修改以后可以编译和运行,但是没有任何输出,不知道你的程序是做什么事情。

补充:
早说你要找1~100的质数、每行显示10个,程序非常简单的,就下面这几行:
program zhishu;
var a,b,i:integer; 
begin 
for i:=1 to 100 do 
begin 
  b:=2; 
  a:=1; 
  repeat
    if i mod b=0 then a:=0; 
    b:=b+1; 
  until (b=i)or(a=0);
  if a=1 then write(i:8);
end; 
end.

上面的程序在TURBO PASCAL和FREE PASCAL下均能正常执行,