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

编程新手求助:99除以2的幂的唯一余数列表生成异常问题

问题分析与修复方案

原代码的核心问题

  • 除数更新逻辑错误:原代码中div = div * div会让除数序列变成2 → 4 → 16 → 256,直接跳过了8、32、64这些需要的2的幂,导致无法计算99与这些数的余数。
  • 内层while循环冗余且错误:内层while循环的条件中r的值不会改变,会导致死循环(如果满足条件),且逻辑上只需要判断一次是否添加余数,不需要循环。

修正后的代码

num = 99
div = 2
lst = []

while div < num:
    r = num % div
    if r != 0 and r not in lst:
        lst.append(r)
    div *= 2  # 正确生成下一个2的幂
print(lst)

代码说明

  1. 除数更新改为div *= 2,确保遍历所有小于99的2的幂:2、4、8、16、32、64。
  2. 用if判断替换内层while循环,避免死循环,同时保证只有非零且未出现过的余数才会被加入列表。

运行后输出为[1, 3, 35],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 07:15:14