题目
将一个正整数分解质因数。例如:输入90,打印出90 = 2 × \times × 3 × \times × 3 × \times × 5。
解析
分解质因数是将一个正整数分解成若干个质因数相乘的形式。以下是基本步骤:
- 从最小的质数2开始。
- 如果这个质数可以整除该整数,则将整数除以这个质数,同时记录下这个质数。
- 继续用这个质数尝试除,直到不能整除为止。
- 然后用下一个质数重复上述步骤。
- 进行直到原整数减少到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的质因数分解