每个人的Python:数学、算法和游戏编程训练营
上QQ阅读APP看书,第一时间看更新

3.3.2 编程实现——解决完全平方数问题

有了四平方数和定理的理论支持,相信你对解决完全平方数问题已经有了新的思路。下面尝试使用Python进行第一次编程,只需要按照前面算法的步骤将其转换为代码即可,示例如下:

上面的代码就是直接对上一小节我们总结的算法进行翻译,运行没什么问题,但是程序运行的效率却不怎么高,我们使用了两次单层循环和一次双层循环,尤其是双层循环,当进行运算的输入数非常大时,循环次数将巨量增加。我们思考一下是否有可以优化的地方,首先判断一个数是不是某个数的平方,不需要进行循环,我们可以直接对这个数进行方平方运算,之后对结果取整,再进行平方运算,如果最终的结果与原数相同,则表明这个数开平方运算后为整数。除了这里可以优化外,循环的边界也可以进行优化,用来降低循环次数,优化后的代码如下:

需要注意,要使用开平方函数,需要导入Python中的math模块,修改后的代码运行效率提高了很多。其实这个程序还可以继续优化,一般情况下,取模运算要比位运算的效率低很多,如果有兴趣,你可以思考一下,是否可以通过将程序中的取模运算替换为位运算来进一步提高效率。