题目描述
把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。
输入输出示例
输入:7
返回值:8
解题思路
丑数:1, 2, 3, 4, 5, 6, 8, 9, 10…
可发现规律:每个丑数都可以由其他两个丑数相乘而得到。
12=2;13=3;15=5;22=4;23=6;24=222=8;33=9;25=10
代码示例
# -*- coding:utf-8 -*-
class Solution:
def GetUglyNumber_Solution(self, index):
# write code here
if index <= 0:
return 0
uglyList = [1] #丑数从1开始
p2=p3=p5=0
count = 1
while count != index:
minValue = min(2 * uglyList[p2], 3 * uglyList[p3],
5 * uglyList[p5])
uglyList.append(minValue)
count += 1
if minValue == 2 * uglyList[p2]:
p2 += 1
if minValue == 3 * uglyList[p3]:
p3 += 1
if minValue == 5 * uglyList[p5]:
p5 += 1
return uglyList[-1]