码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-07-05 22:05:56      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:extend   div   factor   final   pen   ==   sort   range   cto   

 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]

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

标签:extend   div   factor   final   pen   ==   sort   range   cto   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!