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

Python程序if条件不生效 计算1到m中与n整除/非整除数的和差

代码问题根因
  • 累加变量sum1、sum2的初始化位置错误:你把两个变量的初始赋值放在了for循环内部,每次遍历新的数值i时,两个变量都会被重置为0,最终仅会保留最后一个i的计算结果,问题和if判断逻辑本身无关。
修复后的循环实现
n = int(input("num "))
m = int(input("limit "))
sum1 = 0
sum2 = 0
for i in range(1, m+1):
    if i % n == 0:
        sum1 += i
    else:
        sum2 += i
print(f"{sum1} and {sum2}")
print(abs(sum2-sum1))
封装为函数的高效实现(无需循环)

如果要满足「函数接收n、m为入参返回差值」的要求,可以直接用等差数列求和公式计算,避免遍历,在m数值很大时性能优势明显:

def get_diff(n: int, m: int) -> int:
    # 1到m的总和
    total = m * (m + 1) // 2
    # 能被n整除的数是首项为n、公差为n的等差数列,共k项
    k = m // n
    sum_divisible = n * k * (k + 1) // 2
    sum_not_divisible = total - sum_divisible
    return abs(sum_not_divisible - sum_divisible)

# 调用示例
n = int(input("num "))
m = int(input("limit "))
print(get_diff(n, m))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:24:05