Python核心编程课后习题一

Posted on 2015-01-09 13:22  gklee  阅读(210)  评论(0)    收藏  举报

第八章

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)