【Codewars-hamming(汉明数)】

来源:互联网 发布:淘宝企业店铺直通车 编辑:程序博客网 时间:2024/05/21 16:47

【题目】
以2,3,5为底的汉明数,表示为(2^i)(3^j)(5^k),其中i,j,k为大于等于0的整数。
即汉明数的第一个为(2^0)(3^0)(5^0) = 1,第二个为2,第三个为3,第四个为4……以此类推下去。
编写程序求第n个汉明数
【解】

def hamming(n):    k1,k2,k3 = 0,0,0    res = [1]    for i in range(1,n):        s1 = res[k1]*2        s2 = res[k2]*3        s3 = res[k3]*5        min_val = min(s1,s2,s3)        res.append(min_val)        if res[i] == s1:            k1 +=1        if res[i] == s2:            k2 += 1        if res[i] == s3:            k3+= 1    return res[-1]
0 0
原创粉丝点击