首页 > 代码库 > Python核心编程课后习题一

Python核心编程课后习题一

第八章

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 False13         else:14             continue15     return True16 result = getfactors(num)17 data = http://www.mamicode.com/[x for x in result if isprime(x)]18 myresult = data19 def solve(data,num):20     for j in data:21         num /= j22     if num != 1:23         result = getfactors(num)24         data = http://www.mamicode.com/[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)

 

Python核心编程课后习题一