我在 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
但它没有给出正确的值。