首页 > 解决方案 > python中的汉明数

问题描述

我在 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

但它没有给出正确的值。

标签: pythonhamming-numbers

解决方案


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

尝试运行:

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

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


推荐阅读