您的位置:首页 > 编程语言 > Python开发

【python】编程语言入门经典100例--14

2016-02-29 13:53 681 查看
1 #题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

代码:
2 import pdb
3 tmp = int(input('请输入一个正整数:'))
4 print('%d='%tmp,end = '')
5
6 i = 2
7 li = []
8 #pdb.set_trace()
9 while i > 1:
10     if tmp%i == 0:
11         tmp = tmp/i
12         li.append(i)
13         i = 1
14         if tmp == 1:
15             i = 0
16     i += 1
17 for x in li[:len(li)-1]:
18     print('%d*'%x,end='')
19 print(li[-1])
~


运行结果:
[root@HK code_100]# python code_14.py
请输入一个正整数:1000
1000=2*2*2*5*5*5
[root@HK code_100]# python code_14.py
请输入一个正整数:69873
69873=3*23291
[root@HK code_100]# python code_14.py
请输入一个正整数:208628064
208628064=2*2*2*2*2*3*3*724403
[root@HK code_100]# python code_14.py
请输入一个正整数:90
90=2*3*3*5
[root@HK code_100]# python code_14.py
请输入一个正整数:879236872432
879236872432=2*2*2*2*17099*3213773
[root@HK code_100]#


代码解释:

2 import pdb
3 tmp = int(input('请输入一个正整数:'))    #接收输入数字,并转换成int模式
4 print('%d='%tmp,end = '')                 #格式化输出
5
6 i = 2                                    #求质数从2开始除
7 li = []                                    #定义一个空的列表
8 #pdb.set_trace()
9 while i > 1:                              #开启while循环
10     if tmp%i == 0:                        #这个数字从2开始做除法,如果余数为0说明,这个数就是tmp的质数
11         tmp = tmp/i                        #tmp相应的获取除以后的值
12         li.append(i)                        #将可以把tmp整除的数添加到列表li[]
13         i = 1                            #当有一个数字可以整除tmp时,将i重置重新开始循环
14         if tmp == 1:                    #当tmp被除等于1时,说明tmp被除尽
15             i = 0                        #通过赋值i=0,结束while循环
16     i += 1                            #每次计算后,i+1,依次进行除法测试,从2开始向后除,能够取到的数字应该都是质数,比方说,在除以4之前,一定可以被2整除,所以不会出现被非质数进行除的情况
17 for x in li[:len(li)-1]:                #遍历这个li列表的前n-1个数
18     print('%d*'%x,end='')                #格式化输出这n-1个数
19 print(li[-1])                        #格式化输出li的最后一个数,最后三行代码主要是要达到题目中li列表所有元素相乘的格式
~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  题目 正整数 分解质