少儿Python每日一题(8):最大公约数和最小公倍数

求两个数的最大公约数和最小公倍数是非常经典的题型。无论是等级考试还是竞赛题中都会出现。此类题目同时多次出现在蓝桥杯、NOC的比赛中以及电子学会、NCT的Python考级原题中,它们的区别仅仅在于是否对算法复杂度有要求,题目还是这个样子。这里就不列举原题了,我们直接来看看如何解决这类问题吧。

一、最大公约数

输入两个正整数m和n,计算出这两个数的最大公约数并输出。

输入:

一行输入两个正整数,以空格隔开

输出:

两个数的最大公约数

输入样例:

12 18

输出样例:

6

这个问题有多种解决方法,最直观的方法我们首先想到的是枚举法。枚举法顾名思义从指定的范围内一个个找到我们需要的答案,找到答案后退出循环。

从数学的知识我们可以知道,我们首先要知道两个数中谁大谁小。最大公约数最大值为较小的数(如3和6的最大公约数),最小值为1(如3和5的最大公约数)。因此我们循环时需要从最大可能性依次减小,一直循环到1。枚举法的代码也很容易得到:

m, n = map(int, input().split())
a = min(m, n) # 求出m和n中的最小值
for i in range(a, 0, -1):
    if m % i == 0 and n % i == 0:
        print(i)
        break

这种方法虽然思路简单,但是并不是最优解。如果输入的数值较小看不出什么问题,假设输入两个十位数的质数,求它们的最大

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凤城老人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值