上QQ阅读APP看书,第一时间看更新
3.6.1 编程实现——如何判断丑数
解决这道题有两种方法,一种思路是暴力验证,我们将小于所输入的数的所有质数寻找出来,然后依次验证是否可以整除。这种思路理论上可行,但在实际解题过程中并不适用,我们知道质数的判定是非常耗时的,当输入的数很大时,这种方式基本就失效了。另一种思路是根据丑数的性质来入手,因为丑数只能有2、3和5这3种质因数,因此可以将输入的数循环对这3个数进行整除操作,直到最终无法整除2、3和5,这时,如果余数不是1,则表明其还有其他的质因数。编写代码如下:
上面的代码的思路没什么问题,运行起来也能很好地工作,只是看上去代码还是有一些冗余,我们可以想办法对其进行一些简化。在代码中尝试对2、3和5进行整除的逻辑占了非常大的篇幅,可以使用元组对其进行聚合,优化代码如下:
优化后的代码清爽了很多,逻辑也更加清晰。