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,逐渐扩充列表
本文出自 “学习笔记” 博客,请务必保留此出处http://netsyscode.blog.51cto.com/6965131/1746234
原文:http://netsyscode.blog.51cto.com/6965131/1746234