Python计算正整数n排除1与自身的因数个数的代码运行错误求助
问题定位与修正方案
错误原因梳理
- 核心逻辑混淆:你的代码当前是统计「输入的n值」的总因数个数,需求是统计1到n范围内每个整数各自排除1和自身后的因数个数,统计对象完全错位。
- 计数变量作用域错误:
factor变量定义在for循环外,会在遍历过程中持续累加,不会为每个待统计的数单独重置计数,导致结果累加错误。 - 整除判断逻辑写反:
if n % a == 0是判断输入的n能否被a整除,实际需要判断的是「当前待统计的数」能否被介于2和自身-1之间的数整除。 - 输出时机错误:
print放在了单次判断逻辑后,会每做一次整除判断就输出一次,应该等单个数字的因数统计完成后再统一输出。 - 额外的减2逻辑存在边界问题:对于1这类因数总数小于2的数字,直接减2会得到负数结果,不符合预期。
修正后代码
n = int(input('Enter the number: ')) # 打印表头 print("n factor") # 外层遍历1~n的所有待统计数字 for target in range(1, n + 1): factor_cnt = 0 # 内层直接统计2到target-1之间的因数,天然排除1和自身 for divisor in range(2, target): if target % divisor == 0: factor_cnt += 1 # 统计完成后输出结果 print("%d\t%d" % (target, factor_cnt))
输入10时运行代码即可得到你给出的预期输出。
内容的提问来源于stack exchange,提问作者slooowly
相关产品推荐
相关产品推荐

