分解质因数,用递归和生成器两种方法:
一、递归:
# li=[] 只被赋值一次,每次递归调用都是在为其添加新的元素,所以li相当于是一个全局变量 def fun(n, li=[]): if n == 1: return # n = 1 的时候不进行任何操作 for i in range(2, n+1): # i 是偿试测试是否为质因数,取值范围是2到n if n % i == 0: # 如果能整除,i是质因数 if n/i == 1.0: # 测试到自己了,已经是最大值。 print(str(n)+'已经无法再分解!') li.append(i) return li else: print('{0}已被{1}分解:{0}/{1} ={2}'.format(n, i, int(n/i))) n = int(n/i) li.append(i) return fun(n) print(fun(100))
二、生成器:generator
def fun1(n): if n == 1: return i = 1 while i < n: i += 1 if n % i == 0: yield i n = int(n/i) i = 1 for i in fun1(80): print(i, end=' ')

浙公网安备 33010602011771号