pascal - 有一个无效的浮点运算,但在哪里?
问题描述
我目前正在编写一个代码,它需要一个给定的数字打印所有符合 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.
解决方案
您的支票不是直接在使用它的地方之前。思考; 是休息;num-(iter*iter) if-then 之后的语句检查 while 循环可以终止的唯一方法?
尝试单步执行您的程序,这也可以验证块结构是否按您的想法工作。它似乎不太一致,在某些地方使用 begin..end,在其他地方使用缩进。
推荐阅读
- git - How to fix website after reset --hard without undoing it?
- outlook-addin - Outlook web add-in manifest change to support mobile devices (mobileFormFactor) installation fails
- mysql - Mysql query optimization with left joins
- angular - 使用 Angular Flex-Layout 是一种好习惯吗?
- excel - 在 VBA 中键入比索的货币符号
- reactjs - react native right tick animation on success
- java - BitTorrent,DHT,BEP42,计算我的 NodeId
- java - 字符串太大,无法使用 UTF-8 进行编码,而是写为“STRING_TOO_LARGE”
- typescript - Angular6错误:未捕获(承诺):TypeError:(中间值).map不是函数
- ios - 在不更改 BundleId 的情况下辞职 iOS 应用程序 .iPA 文件