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

Python实现:输出给定自然数的所有两自然数乘积对

解决找自然数因数对的问题

嘿,作为编程新手遇到这种小bug太正常啦!我来帮你搞定这个找因数对的函数~

问题根源分析

你说输出缺少最后一行,大概率是循环范围没设置对——比如循环只到了目标数平方根的整数部分,没包含这个整数本身,导致漏掉了最后一组因数对(比如完全平方数的(√n, √n),或者非平方数的最后一组正向/反向对)。

正确实现方案(以Python为例)

def find_factor_pairs(n):
    # 先做输入合法性校验,确保是正自然数
    if not isinstance(n, int) or n <= 0:
        print("请输入正自然数哦!")
        return
    
    factor_pairs = []
    # 循环范围要包含平方根的整数部分,所以要+1
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            # 找到一组因数对:i 和 n//i
            factor_pairs.append((i, n // i))
            # 如果两个因数不相等,添加反向的对(如果需要有序对的话)
            if i != n // i:
                factor_pairs.append((n // i, i))
    
    # 逐个输出所有因数对
    for pair in factor_pairs:
        print(pair)

关键细节解释

  1. 输入校验:先判断输入是不是正整数,避免非法输入导致的报错
  2. 循环范围的+1:这是解决你“缺最后一行”的核心!比如输入4,它的平方根是2,如果循环只到int(4**0.5)也就是2,但range(1,2)只会遍历1,会漏掉(2,2)这组;加+1后变成range(1,3),就能遍历1和2,不会遗漏。
  3. 因数对的双向添加:如果需要所有有序对(比如(1,6)和(6,1)都要),就添加反向对;如果只需要无序对,删掉if i != n//i这段代码就行。
  4. 遍历输出:最后把收集到的所有因数对逐个打印,就能保证每一组都不会漏掉啦!

示例测试

比如输入6,会输出:

(1, 6)
(6, 1)
(2, 3)
(3, 2)

输入9,会输出:

(1, 9)
(9, 1)
(3, 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:17:40