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并且i
 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,逐渐扩充列表