![每个人的Python:数学、算法和游戏编程训练营](https://wfqqreader-1252317822.image.myqcloud.com/cover/137/44510137/b_44510137.jpg)
上QQ阅读APP看书,第一时间看更新
3.3.2 编程实现——解决完全平方数问题
有了四平方数和定理的理论支持,相信你对解决完全平方数问题已经有了新的思路。下面尝试使用Python进行第一次编程,只需要按照前面算法的步骤将其转换为代码即可,示例如下:
![](https://epubservercos.yuewen.com/33C5B1/23721678209556606/epubprivate/OEBPS/Images/Figure-T59_29629.jpg?sign=1739397431-405IiHvvhB9k4Gdcn740JGHfLvLO2iZf-0-e5e54833fb394c523ae5b2cc91b48e03)
上面的代码就是直接对上一小节我们总结的算法进行翻译,运行没什么问题,但是程序运行的效率却不怎么高,我们使用了两次单层循环和一次双层循环,尤其是双层循环,当进行运算的输入数非常大时,循环次数将巨量增加。我们思考一下是否有可以优化的地方,首先判断一个数是不是某个数的平方,不需要进行循环,我们可以直接对这个数进行方平方运算,之后对结果取整,再进行平方运算,如果最终的结果与原数相同,则表明这个数开平方运算后为整数。除了这里可以优化外,循环的边界也可以进行优化,用来降低循环次数,优化后的代码如下:
![](https://epubservercos.yuewen.com/33C5B1/23721678209556606/epubprivate/OEBPS/Images/Figure-T59_29631.jpg?sign=1739397431-Fk8r3XvFcfGAMyvHkS4WcsRrpFlxAjVf-0-1baa80258b4adc5c74035d441b88f78e)
![](https://epubservercos.yuewen.com/33C5B1/23721678209556606/epubprivate/OEBPS/Images/Figure-P59_13595.jpg?sign=1739397431-e5L0T6oHInpe9tkPEGOJRhxh9clbymJ0-0-90229211c7c1470a77dfd5ee098fa08a)
需要注意,要使用开平方函数,需要导入Python中的math模块,修改后的代码运行效率提高了很多。其实这个程序还可以继续优化,一般情况下,取模运算要比位运算的效率低很多,如果有兴趣,你可以思考一下,是否可以通过将程序中的取模运算替换为位运算来进一步提高效率。