上QQ阅读APP看书,第一时间看更新
4.3.2 编程实现——求平方数之和
本题还是与平方运算有关。假设给定一个非负整数n,你能否编程判断是否存在两个整数a和b使得a的平方加上b的平方结果为n。
根据题意,我们需要找到两个数,使其平方和等于所输入的数。对于本题,我们可以通过全遍历的方式来找到答案,但是当输入的数很大时,全遍历的方式就不太合适了,我们可以采用左右夹逼的方式来寻找答案。
示例代码如下:
如以上代码所示,我们以0为下限,原数的平方根为上限进行夹逼寻找。在循环查找过程中,如果当前上限和下限的平方和小于原数,则将下限增大,如果大于原数,则将上限减小,直到找到正确的组合或夹逼结束。
在解决本题时,有一点需要注意,题目中并没有要求相加的两个数不能相等,因此在编程时,我们要将这种特殊场景考虑在内,即下限与上限相等的情况。