找出指定数字的所有质因数,比如:90=2*3*3*5。

 1 from math import sqrt
 2 from functools import reduce
 3 from operator import mul
 4 
 5 def is_prime(n):
 6     for k in range(2, int(sqrt(n))+1):
 7         if n % k == 0:
 8             return False
 9     return True
10 
11 def get_prime(num):
12     temp = []
13     for i in range(2, num+1):
14         if num % i == 0 and is_prime(i):
15             temp.append(i)
16     return temp
17 
18 def final_factor(num):
19     prime_factor = get_prime(num)
20     while reduce(mul, prime_factor) < num:
21         mid_calc = reduce(mul, prime_factor)
22         prime_factor.extend(get_prime(num//mid_calc))
23     return sorted(prime_factor)

结果:[2, 3, 3, 5]

原文地址:https://www.cnblogs.com/laresh/p/7123556.html