python - 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
但它没有给出正确的值。
解决方案
由于您可能在进行代码战以了解有关编码的更多信息,因此它并不能真正帮助您提供答案。
尝试运行:
for i in range(10):
print(i, hamming(i))
并查看输出。您可以轻松找出前十个输出应该是什么。弄清楚为什么你没有得到那个。什么是两次给出 5 作为答案,然后跳过 6?
推荐阅读
- google-apps-script - 将自动创建的 Gmail 标签分配给各个线程 - 谷歌应用脚本
- php - mysql 获取昨天的标志(另一列不是日期时间类型)
- r - 循环一个向量以将其应用于函数以执行网络抓取
- opennlp - 如何使用 NLP 将句子拆分为文本和数字?
- c++ - //usr/lib64/librt.so.1:命令行中缺少 DSO
- d3.js - 使用 d3 v6 获取 x 轴上的刻度,其中 scalesBand 在列下方居中
- java - 构造Balanced BST,包括每个节点及其子节点的总和输出应该是新的二叉搜索树的postOrder遍历
- angular - 将 Observable 转换为数组
- jmeter - 如何在jmeter的request2中使用来自response1的数组?
- python-module - Python包没有正确导入