我现在正在写一段代码,在给定一个数字的情况下,打印所有符合4n+1格式的质数,这就是我目前所掌握的。他们的问题是,这给了我一个运行时错误207,我认为这意味着无效的浮点操作,但我看不出它是如何结束无效的浮点操作的。唯一的代码应该是处理"if num-(iter*iter)> then“行中的负数。
program TwoSquares;
var
num, numSqrt, iter, bigSqr,smallSqr: integer;
begin
num:=29;
while num>4 do
begin
numSqrt:=trunc(sqrt(num));
for iter:=2 to numSqrt do
begin
if num mod iter = 0 then
num:=num - 1;
continue;
end;
if (num-1) mod 4 = 0 then
begin
iter:=(num-1) div 4;
while iter>0 do
begin
if num-(iter*iter)>0 then
bigSqr:=iter;
break;
iter:=iter-1;
end;
smallSqr:=trunc(sqrt(num-(iter*iter)));
writeln(num,' ', smallSqr,' ',bigSqr);
num:=num - 1;
end;
end;
end.发布于 2020-10-28 17:58:34
您的支票不能直接放在使用地点的前面。想一想;在这个数字后面的break;语句-(iter*iter) if-then检查while循环可以终止的唯一方式吗?
尝试单步执行你的程序,这也可以验证块结构是否如你所想的那样工作。这看起来不太一致,在某些地方使用begin..end,而在其他地方使用缩进。
https://stackoverflow.com/questions/64569052
复制相似问题