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

Python编程求助:用while循环计算自然数连续被2整除的次数

问题解决:计算自然数连续被2整除的次数

原代码的问题

  • 循环条件n > 0会导致死循环:当n变成5这类奇数时,依然满足n>0,但已经无法被2整除,循环会一直运行
  • 判断逻辑(n // 2) > 1错误:
    • 比如n=2时,2//2=1不满足大于1,会漏掉这次计数(实际2能被2整除1次)
    • 且每次循环没有更新n的值,导致n一直不变,计数器无限增加

正确实现思路

  1. 循环条件改为n能被2整除(n % 2 == 0),这样当n变为奇数时自动终止循环
  2. 每次循环中:
    • 先将计数器加1(因为当前n能被2整除,计数+1)
    • 把n更新为n // 2(得到整除后的结果,继续下一次判断)
  3. 边界情况处理:输入n=1时,无法被2整除,计数器保持0(题目限定自然数,无需考虑0)

修正后的代码

n = int(input())
counter = 0
while n % 2 == 0:
    counter += 1
    n = n // 2
print(counter)

运行示例(输入80)

  • 80%2==0 → counter=1,n=40
  • 40%2==0 → counter=2,n=20
  • 20%2==0 → counter=3,n=10
  • 10%2==0 → counter=4,n=5
  • 5%2≠0 → 循环结束,输出4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:35:37