1 #题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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
])
~
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[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]
#
|
代码解释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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列表所有元素相乘的格式
~
|
本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/1745973
,如需转载请自行联系原作者