Python求两个或三个正整数的最大公约数和最小公倍数

题目:求两个正整数的最大公约数和最小公倍数。
基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出。
提高要求:
1.三种以上算法解决两个正整数最大公约数问题。
2.求3个正整数的最大公约数和最小公倍数。

源代码如下:

# 辗转相除法求最大公约数
#
# a = int(input("请输入a的值:"))
# b = int(input("请输入b的值:"))
# c = 0
# if a<b:
#     c = a
#     a = b
#     b = c
# while a%b!=0:
#     c = a%b
#     a = b
#     b = c
# print("最大公约数为:" +str(b))






# 相减法求最大公约数


# a = int(input("请输入a的值:"))
# b = int(input("请输入b的值:"))
# c = 0
# if a<b:
#     c = a
#     a = b
#     b = c
# while a-b!=0:
#     c = a-b
#     a = b
#     b = c
# print("最大公约数为:" +str(b))





#第三个方法求最大公约数

#输入两个数字,循环出1到两个数最小值之间的数,当这个数同时能够被a和b整除时,将这些数保存在数组i[]中
#使用sort()对数组i进行从小到大的排序,使用i[-1],输出数组i[]的最大值,即最大公约数

# a = int(input("请输入a的值:"))
# b = int(input("请输入b的值:"))
# if a>b:
#     t = a
#     a = b
#     b = t
# for n in range(1,a+1):
#     if a%n==0 and b%n==0:
#         i = [n]
#         i.sort()
# print("最大公约数为:" + str(i[-1]))
#
#
#
#
#



#求三个数的最大公约数:先求出两个数的最大公约数,再求它与另一个数的最大公约数
# a = int(input("请输入a的值:"))
# b = int(input("请输入b的值:"))
# c = int(input("请输入c的值:"))
# if a>b:
#     t = a
#     a = b
#     b = t
# for n in range(1,a+1):
#     if a%n==0 and b%n==0:
#         i = [n]
#         i.sort()
# m = i[-1]
# print("a和b的最大公约数为:" + str(m))
# if m>c:
#     l = m
#     m = c
#     c = l
# for n in range(1, m+1):
#     if m%n == 0 and c%n == 0:
#         p = [n]
#         p.sort()
# print("a b c的最大公约数为:" + str(p[-1]))
#
#



# 第一种求最小公倍数的方法
# 求三个数的最小公倍数,分别循环出三个数的倍数,在找出相同的数,放在数组中,输出最小值即可
# a = int(input("请输入a的值:"))
# b = int(input("请输入b的值:"))
# c = int(input("请输入c的值:"))
# d = a * b * c
# m = []
# n = []
# o = []
# for i in range(1, d + 1):
#     if i % a == 0:
#         m.append(i)
# print("a的公倍数为:" + str(m))
# for j in range(1, d + 1):
#     if j % b == 0:
#         n.append(j)
# print("b的公倍数为:" + str(n))
# for k in range(1, d + 1):
#     if k % c == 0:
#         o.append(k)
# print("c的公倍数为:" + str(o))  # 三个数组中存放了abc的公倍数
# f = []
# for i in m:
#     if (i in n):
#         if (i in o):
#             f.append(i)
#             f.sort()
#             print("a b c 的所有公倍数为:" + str(f[0]))


# 第二种求最小公倍数的方法
# 求三个数的最小公倍数,先设置一个number=1,循环判断number对abc取余,当余数同时为0,则跳出循环并输出number,否则继续循环number+=1
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))
c = int(input("请输入c的值:"))
number = 1
while True:
    if number%a==0 and number%b==0 and number%c==0:
        print("abc的最小公倍数为:" + str(number))
        break
    else:
        number+=1

算法思路:
求两个整数的最大公约数的方法分别为:
1.算法思路:辗转相除法
2.算法思路:辗转相减法
3.算法思路:输入两个数字,循环出1到这两个数中最小值之间的数,当这个数能够同时被a和b整除时,将这些数保存在数组i[]中,使用sort()函数对数组i[]进行从小到大的排序,然后输出i[-1],即最大公约数

求三个正整数的最大公约数的方法:
1.算法思路:在上述方法3的基础上进行两两之间求最大公约数的计算

求三个正整数的最小公倍数的方法:
1.算法思路:先分别循环输出三个数的倍数,再找出这三个数组中相同的数,将这些数放在一个新的数组中,使用sort()排序后进行输出
2. 算法思路:先设置一个number=1,然后while True进行循环,判断number对abc取余,当它们的余数同时为0的时候break然后打印出number的数值,否则number+=1

求最大公约数的系统流程图为:
这里写图片描述
求最小公倍数的系统流程图为:
这里写图片描述

  • 18
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值