标签:
第八章
8-6.素因子分解。以刚才练习中的isprime()和getfactors()函数为基础编写一个函数,它接受一个整型作为参数,返回该整型所有素数因子的列表。这个过程叫做求素因子分解,它输出的所有因子之积应该是原来的数字。注意列表里可能有重复的元素。例如输入20,返回结果应该是[2,2,5].
下面是我解决这题的代码:
1 import math 2 num = int(raw_input(‘please input a number: ‘)) 3 def getfactors(num): 4 seq = [] 5 for each in range(2,num+1): 6 if num % each == 0: 7 seq.append(each) 8 return seq 9 def isprime(i): 10 for each in range(2,int(math.sqrt(i)+1)): 11 if i % each == 0: 12 return False 13 else: 14 continue 15 return True 16 result = getfactors(num) 17 data = [x for x in result if isprime(x)] 18 myresult = data 19 def solve(data,num): 20 for j in data: 21 num /= j 22 if num != 1: 23 result = getfactors(num) 24 data = [x for x in result if isprime(x)] 25 myresult.extend(data) 26 solve(data,num) 27 else: 28 print sorted(myresult) 29 solve(data,num)
标签:
原文地址:http://www.cnblogs.com/Gklee2014/p/4213075.html