【问题标题】:Hamming numbers in python [closed]python中的汉明数[关闭]
【发布时间】:2021-11-21 23:21:14
【问题描述】:

我在 codewars 中遇到了一个问题,要求找到第 n 个最小的汉明数。基本上,这个数字只能有 2、3 和/或 5 作为因子。下面是我为它编写的代码。

def hamming(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    elif n == 3:
        return 3
    elif n == 5:
        return 5
    else:
        count = 1
        i = 2
        while count < n:
            if check(i):
                count += 1
            i += 1

        return i

def check(n):
    if n == 2:
        return True
    elif n == 3:
        return True
    elif n == 5:
        return True
    else:
        if n % 2 == 0:
            return check(n / 2)
        elif n % 3 == 0:
            return check(n / 3)
        elif n % 5 == 0:
            return check(n / 5)
        else:
            return False

但它没有给出正确的值。

【问题讨论】:

    标签: python hamming-numbers


    【解决方案1】:

    由于您大概是在进行代码大战以了解有关编码的更多信息,因此它并不能真正帮助您提供答案。

    尝试运行:

    for i in range(10):
        print(i, hamming(i))
    

    并查看输出。您可以轻松找出前十个输出应该是什么。弄清楚为什么你没有得到那个。什么是 5 作为答案两次,然后跳过 6?

    【讨论】:

    • 谢谢你。已经有一段时间了,我会试着弄清楚。
    猜你喜欢
    • 2012-03-10
    • 2014-09-23
    • 1970-01-01
    • 2013-03-13
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多