You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现range(5,10000)数值按规则迭代至1的循环方法

3x+1(考拉兹)序列迭代实现

你当前的代码和目标需求偏差较大,且存在变量引用错误(代码里append的sum从未定义),冗余的奇数判断也没有实际作用,按以下逻辑实现即可:

  • 外层用for循环遍历range(5,10000)的所有起始整数
  • 对每个起始整数,嵌套while循环做迭代:因为每个数迭代到1的步数不固定,用while判断当前值是否为1,不为1就持续按规则计算下一个值
  • 偶数计算用整数除法//,避免生成浮点数影响后续判断

可直接运行的参考代码:

# 存储所有迭代过程中出现的奇数、偶数
odd = []
even = []
# 存储每个起始数对应的完整迭代序列
sequence_map = {}

for start in range(5, 10000):
    current = start
    current_seq = [current]
    # 内层循环:迭代到1就停止
    while current != 1:
        if current % 2 == 0:
            even.append(current)
            current = current // 2
        else:
            odd.append(current)
            current = 3 * current + 1
        current_seq.append(current)
    sequence_map[start] = current_seq

代码说明:

  • 以起始值5为例,生成的序列为[5, 16, 8, 4, 2, 1],符合给定的函数规则
  • 如果你不需要存储全量序列,只需要验证迭代逻辑,可以删除sequence_map相关的代码,只保留奇偶值存储或者迭代计数逻辑即可
  • 注意不要把奇偶判断放在外层循环:外层判断只能识别起始值的奇偶,迭代过程中生成的中间值不会被分类,必须放在内层的while循环里才能覆盖所有迭代产生的数值

内容的提问来源于stack exchange,提问作者David David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:30:44