分解质因数

将一个正整数分解质因数

分析如下:

对输入的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)
查看代码

 

posted @ 2019-03-29 11:59  十二点几  阅读(701)  评论(0编辑  收藏  举报