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一直不变,计数器无限增加
- 比如n=2时,
正确实现思路
- 循环条件改为n能被2整除(
n % 2 == 0),这样当n变为奇数时自动终止循环 - 每次循环中:
- 先将计数器加1(因为当前n能被2整除,计数+1)
- 把n更新为
n // 2(得到整除后的结果,继续下一次判断)
- 边界情况处理:输入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
相关产品推荐
相关产品推荐

