1 #题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
代码:
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
运行结果:
[root@HK code_100]# python code_16.py 请输入第一个正整数:4请输入第二个正整数:74和7的最大公约数为14和7的最小公倍数是:28[root@HK code_100]# python code_16.py 请输入第一个正整数:14请输入第二个正整数:2114和21的最大公约数为714和21的最小公倍数是:42[root@HK code_100]# [root@HK code_100]# python code_16.py 请输入第一个正整数:40请输入第二个正整数:6040和60的最大公约数为2040和60的最小公倍数是:120[root@HK code_100]#
代码分析:
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并且i0): #确定循环条件 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,逐渐扩充列表