- 论坛徽章:
- 0
|
是在《python核心编程》上看到的一个习题:
素因子分解。以刚才练习中的isprime()和getfactors()函数为基础编写一个函数,它接受一个整型作为参数,返回该整型所有素数因子的列表。这个过程叫做求素因子分解,它输出的所有因子之积应该是原来的数字。注意列表里可能有重复的元素。例如输入20,返回的结果应该是[2,2,5]。
我想到了用递归的方法,但老是出错,请各位大牛帮忙看下哪里出了问题,该怎么纠正。多谢了!
代码如下:- #coding=utf-8
- def isprime(num):
- count = num / 2
- while count >1:
- if num % count == 0:
- return False
- break
- else:
- count -= 1
- else:
- return True
- def getfactor(num):
- l = []
- count = num / 2
- for n in range(2, count + 1):
- if num % n == 0 and isprime(n):
- l.append(n)
- return l
- def suyinzi(num):
- fac = getfactor(num)
- mul = 1
- for n in fac:
- mul *= n
- if mul == num:
- return fac
- else:
- return fac + suyinzi(num / mul)
- print suyinzi(20)
复制代码 |
|