这个问题,相对来说是比较复杂的,我们需要首先来分析一下。
我们首先假设这个数为X,两个平方数分别为n和m。
则大概的步骤如下所示:
1、我们可以得到一个公式,也即:x + 100 = n*n, x + 100 + 168 = m*m。
2、计算等式:m2 - n2 = (m + n)(m - n) = 168
3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数,或者两者均为偶数。
4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。
5、 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。
6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。
7、接下来将 i 的所有数字循环计算即可。
附代码图:
其实,我们可以看到,代码的解读顺序,与实际分析问题的思路,呈现出对称的一个思路,也就是,我们需要将现实问题,逐步的进行分析,逐渐变成能够让计算机程序逐步运行的思路去进行解决。