题目

将一个正整数分解质因数。例如:输入90,打印出90 = 2 × \times × 3 × \times × 3 × \times × 5。

解析

分解质因数是将一个正整数分解成若干个质因数相乘的形式。以下是基本步骤:

  1. 从最小的质数2开始。
  2. 如果这个质数可以整除该整数,则将整数除以这个质数,同时记录下这个质数。
  3. 继续用这个质数尝试除,直到不能整除为止。
  4. 然后用下一个质数重复上述步骤。
  5. 进行直到原整数减少到1。

例如,分解60的质因数:60 ÷ 2 = 30, 30 ÷ 2 = 15, 15 ÷ 3 = 5, 所以60的质因数是2, 2, 3, 5。

这个函数接受一个整数,并返回一个列表,其中包含的所有质因数。首先,它分解出所有的2,然后开始检查奇数因数。函数只需要检查到,因为所有大于的因数必定已经在分解过程中被捕获。如果最后大于2,那么本身也是一个质因数。

代码

def prime_factors(n):
    factors = []
    # 分解2的因数
    while n % 2 == 0:
        factors.append(2)
        n = n // 2

    # 现在n必定是奇数,可以从3开始检查更大的因数
    for i in range(3, int(n ** 0.5) + 1, 2):
        while n % i == 0:
            factors.append(i)
            n = n // i

    # 如果n是一个大于2的质数,它也会是一个因数
    if n > 2:
        factors.append(n)
    return factors


# 测试函数
print(prime_factors(60))  # 例如60的质因数分解

运行结果

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐