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

如何消除因数表生成代码中的冗余乘法输出?

如何去除因数分解中的重复乘法对?

你的代码会生成重复的乘法对,核心原因是循环遍历了1到num的所有数,每找到一个因数i,对应的另一个因数num/i会在后续循环中再次被当作i输出一次。

解决方法是把循环上限改为**num的平方根**(取整后+1,确保覆盖平方根本身的情况),这样就能避免重复输出:

num = int(input("Enter num: "))
# 循环到num的平方根,取整后+1,确保包含平方根本身
for i in range(1, int(num**0.5) + 1):
    if num % i == 0:
        # 处理完全平方数的情况,避免重复输出同一因数对
        if i == num // i:
            print(f"{i} * {num//i} = {num}")
        else:
            print(f"{i} * {num//i} = {num}")

关键逻辑说明:

  • 因数总是成对出现的,比如10的因数对是(1,10)、(2,5),当i遍历到2时已经输出2*5,后续i超过10的平方根(约3.16)就会停止循环,不会再遍历到5,自然避免重复。
  • 用num//i替代num/i,能确保输出整数形式,避免出现5.0这类不必要的小数。
  • 加入i == num//i的判断,是为了处理像4、9这类完全平方数,避免重复输出22、33这类内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:39:55