分解质因数
将一个正整数分解质因数
分析如下:
对输入的n进行分解质因数,先找到一个最小的质数k
1、如果k等于n,则分解结束,输出k
2、如果n>k,但n能被k整除,则应记录k的值,并用n除以k的商,作为新的正整数n,重复执行第一步
3、如果n不能被k整除,则用k+1作为k的值,重复执行第一步
代码如下
1、使用递归分解
1 def reduceNum(n): 2 print '{} = '.format(n), 3 if not isinstance(n, int) or n <= 0 : 4 print '请输入一个正确的数字 !' 5 exit(0) 6 elif n in [1] : 7 print '{}'.format(n) 8 while n not in [1] : # 循环保证递归 9 for index in xrange(2, n + 1) : 10 if n % index == 0: 11 n /= index # n 等于 n/index 12 if n == 1: 13 print index 14 else : # index 一定是素数 15 print '{} *'.format(index), 16 break
2、使用for循环分解
1 def reduceNum(num): 2 n=num 3 fList=[] 4 for i in range(int(n/2)+1): 5 for j in range(2,n): 6 if num % j==0: 7 fList.append(j) 8 num=num//j 9 break 10 11 if len(fList)==0: 12 print('此数为质数') 13 exit() 14 15 print('%d='%(n),end='') 16 for i in range(len(fList)): 17 if i==len(fList)-1: 18 print('%s' % (fList[i])) 19 else: 20 print('%s*' % (fList[i]),end='') 21 reduceNum(7)