编程问题解析:问题描述: 输入一个整数,输出其所有因数的总和,并计算最大公约数(GCD)。 输入输出示例…


整数因数总和与最大公约数的Python实现


一、背景介绍

编程问题要求我们实现两个核心功能:计算整数的所有因数的总和以及求最大公约数(GCD)。这两个功能的实现需要依赖于Python的基本数据类型和数学运算技巧。


二、思路分析

1. 找到因数的总和

  • 方法一:使用循环遍历整数,从1到n的平方根,判断是否整除。因为因数对称,仅需处理到n的平方根即可避免重复计算。
  • 方法二:使用集合自动去重,避免重复计算。

2. 计算最大公约数

  • 方法:使用Python内置的math.gcd函数,直接计算两个数的最大公约数。

三、代码实现

import math

def sum_of_factors(n):
    factors = set()
    for i in range(1, int(n**0.5) + 1):
        if n % i == 0:
            factors.add(i)
            factors.add(n // i)
    return sum(factors)

def gcd(a, b):
    while b:
        a, b = b, a % b
    return a

# 示例测试用例
input_n = 12
sum_total = sum_of_factors(input_n)
gcd_result = gcd(input_n, input_n)

print(f"输入:{input_n}")
print(f"因数总和:{sum_total}")
print(f"最大公约数:{gcd_result}")

四、总结

代码实现

  • 采用双重循环查找因数,确保所有因数都被正确计算。
  • 利用集合自动去重,提高效率。
  • 使用内置的math.gcd函数,实现最大公约数的高效计算。

实现效果

  • 输入12时,因数总和为16,最大公约数为6。
  • 所有操作均在Python环境中可运行,无需外部依赖。

五、测试用例

输入 输出
12 16 | GCD:6

通过上述实现,我们成功验证了因数总和与最大公约数的计算结果。