基于下面原作者的文章提出一下自己拙见,原作者分析地很详细,给了我很大地启发。真心感谢!
有关x的初始设定可以看文章最后的链接,我想说的是要注意y和z的整数特性。事实上由
(z+y)(z-y)=168就可以得到改代码中do-while循环的判断条件。好了,这就是我的分享,感谢阅读。
int main()
{
double z = 0;
double y = 0;
int x = -100;
do {
y = sqrt(x + 100);
z = sqrt(x + 100 + 168);
if (y == (int)y && z == (int)z)
printf("%d\n", x);
x++;
} while ((168 > (z + y) && (z + y) > -168) && ((z - y) > -168 && (z - y) < 168));
}
https://blog.youkuaiyun.com/baishuiniyaonulia/article/details/77922601