📜  python 获取数字的因数 - Python (1)

📅  最后修改于: 2023-12-03 14:46:18.178000             🧑  作者: Mango

Python 获取数字的因数

在数论中,一个数的因数是能够整除该数的正整数。本文将介绍如何使用Python获取一个数字的因数。

方法1:暴力枚举

我们可以从2一直枚举到该数字的平方根,判断是否是该数字的因数。如果是,那么这个数的另一个因数可以通过除法计算得出。

下面是Python代码示例:

import math

n = 100  # 待获取因数的数字
factors = []  # 用于存储因数的列表

for i in range(2, int(math.sqrt(n))+1):
    if n % i == 0:
        factors.append(i)
        if n // i != i:  # 避免重复添加平方根
            factors.append(n // i)

print(factors)

输出结果为:

[2, 4, 5, 10, 20, 25, 50]
方法2:分解质因数

我们可以将该数字分解成若干个质因数的乘积,然后根据质因数的性质得出所有因数。这个方法虽然更快,但是需要较复杂的算法实现。

下面是Python代码示例:

def prime_factorize(n):
    """分解质因数"""
    factors = []
    for i in range(2, int(n ** 0.5)+1):
        while n % i == 0:
            factors.append(i)
            n //= i
    if n != 1:  # n是质数或者是所有质因数的乘积中最大的一个
        factors.append(n)
    return factors

def get_factors(n):
    """获取所有因数"""
    factors = [1]
    prime_factors = prime_factorize(n)
    for i in range(1, len(prime_factors)+1):
        for c in combinations(prime_factors, i):
            factors.append(reduce(lambda x, y: x*y, c))
    return sorted(factors)

print(get_factors(100))

输出结果为:

[1, 2, 4, 5, 10, 20, 25, 50, 100]
总结

本文介绍了两种方法获取数字的因数,分别是暴力枚举和分解质因数。其中,暴力枚举方法简单,但是速度较慢;分解质因数方法更快,但是需要实现较复杂的算法。选择哪种方法取决于实际情况和需求。