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

  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
请输入第二个正整数: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]#


代码分析:


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


你可能感兴趣的:(题目,正整数,输入两个)