1 #题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
3
m
=
int
(
input
(
'请输入第一个正整数:'
))
4
n
=
int
(
input
(
'请输入第二个正整数:'
))
5
i
=
1
6
j
=
1
7
limax
=
[]
8
li1
=
[]
9
li2
=
[]
10
li
=
[]
11
while
(i >
0
and
i < m
and
i < n):
12
if
(m
%
i
=
=
0
and
n
%
i
=
=
0
):
13
limax.append(i)
14
i
+
=
1
15
print
(
'%d和%d的最大公约数为%d'
%
(m,n,
max
(limax)))
16
17
while
(j >
0
):
18
19
li1.append(j
*
m)
20
li2.append(j
*
n)
21
for
x
in
li1:
22
for
y
in
li2:
23
if
x
=
=
y:
24
print
(
'%d和%d的最小公倍数是:%d'
%
(m,n,x))
25
j
=
-
1
26
j
+
=
1
|
运行结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
[root@HK code_100]
# python code_16.py
请输入第一个正整数:
4
请输入第二个正整数:
7
4
和
7
的最大公约数为
1
4
和
7
的最小公倍数是:
28
[root@HK code_100]
# python code_16.py
请输入第一个正整数:
14
请输入第二个正整数:
21
14
和
21
的最大公约数为
7
14
和
21
的最小公倍数是:
42
[root@HK code_100]
#
[root@HK code_100]
# python code_16.py
请输入第一个正整数:
40
请输入第二个正整数:
60
40
和
60
的最大公约数为
20
40
和
60
的最小公倍数是:
120
[root@HK code_100]
#
|
代码分析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
3
m
=
int
(
input
(
'请输入第一个正整数:'
))
#接收第一个数
4
n
=
int
(
input
(
'请输入第二个正整数:'
))
#接收第二个数
5
i
=
1
6
j
=
1
7
limax
=
[]
8
li1
=
[]
9
li2
=
[]
10
li
=
[]
11
while
(i >
0
and
i < m
and
i < n):
#当i>0并且i<m并且i<n,最大公约数一定比这个数小
12
if
(m
%
i
=
=
0
and
n
%
i
=
=
0
):
#如果一个数能被m和n同时整除
13
limax.append(i)
#将符合条件的数添加到列表limax
14
i
+
=
1
#i循环+1,当i不满足while条件时跳出循环
15
print
(
'%d和%d的最大公约数为%d'
%
(m,n,
max
(limax)))
#格式化输出最大公约数,limax列表中的最大的数就是m和n的最大公约数
16
17
while
(j >
0
):
#确定循环条件
18
19
li1.append(j
*
m)
#创建list,为m的所有倍数
20
li2.append(j
*
n)
#创建list,为n的所有倍数
21
for
x
in
li1:
#遍历li1
22
for
y
in
li2:
#遍历li2
23
if
x
=
=
y:
#当两个list中有一项相等时
24
print
(
'%d和%d的最小公倍数是:%d'
%
(m,n,x))
#打印这个第一个出现的相等的数,这个数就是m和n的最下公倍数
25
j
=
-
1
#修改while判断条件,跳出循环
26
j
+
=
1
#j循环+1,逐渐扩充列表
|
本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/1746234
,如需转载请自行联系原作者