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

3.6.3 代码改进——解决丑数扩展问题

上一节中,我们定义丑数为只包含质因数2、3和5的正整数。现在,我们对定义做一点点的扩展。假设输入任意数a、b和c,请找到第n个可以被a、b或c整除的正整数。

例如,我们设定a = 2、b = 3、c = 5、n = 3。此时,符合条件的丑数列表为2、3、4、5、6…。我们要找的第3个数为4。

总体来说,要解决这道题还是有不小的难度。按照常规的思路循环累加查找是不太现实的,当输入较大时,循环累加所需要消耗的时间将非常恐怖。我们需要想出一种巧妙的算法来优化查找效率,从而解决这道题。