def prime_factors(n):
i = 2
factors = []
while i * i <= n:
if n % i:
i += 1
else:
n //= i
factors.append(i)
if n > 1:
factors.append(n)
return factors
- 只有质数可以作为其他数的因数,因此对于一个数,可以不断除以它的质因数,直到除不动为止。
- 对于一个数,它最多只有一个大于 √n 的因数,因此可以从 2 开始,不断枚举到 √n,如果该数能被整除,则将它除以该因数,并将该因数加入列表中