剑指offer49:丑数

题目描述

把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

#方法1:暴力直观方法
def  isugly(number):
    while  number%2==0:
        number/=2
    while number%3==0:
        number/=3
    while number%5==0:
        number/=5
    return  True if number==1 else False

# number=7
# isugly(number)

# def uglynumber(n,m=10):
#     count=0
#     while n:
#         if isugly(n):
#             count += 1
#         if count ==m :
#             return  n
#         n += 1
#     return  False

def uglynumber(n):#n=1500
    if n<=0:
        return 0
    number=0
    count=0
    while count < n:
        number+=1
        if isugly(number):
            count+=1
    return number
        
uglynumber(9)           

方法2:创建结果数组,用空间换时间

#方法2:创建结果数组,用空间换时间
def uglynumber(n):#n=1500
    if  n<=0:
        return 0
    ans=[1]
    i2,i3,i5=0,0,0
    i=1
    while len(ans)

 

你可能感兴趣的:(剑指offer)