数学试卷最后一道大题?用Python五秒搞定最大公约数和最小公倍数!
开篇小故事
"36 和 48 的最大公约数是多少?最小公倍数呢?"
五年级的小浩盯着试卷发愣。列竖式求公约数,要一步步试,好烦啊。
姐姐凑过来:"用 Python 呀!几行代码,输入两个数,答案'啪'就出来。不过——你得先理解它的原理,不然就是抄答案。"
小浩:"那你教我原理!"
你能学到什么
• 理解最大公约数(GCD)和最小公倍数(LCM) • 认识欧几里得算法(辗转相除法)——2000多年前的古老智慧 • 学会 Python 函数 def的基本写法
数学小课堂
最大公约数(GCD)
两个数都能被整除的最大的那个数。
比如 12 和 18:
• 12 的约数:1、2、3、4、6、12 • 18 的约数:1、2、3、6、9、18 • 共同的约数:1、2、3、6 • 最大公约数 = 6
最小公倍数(LCM)
两个数的倍数中最小的那个公共倍数。
比如 12 和 18:
• 12 的倍数:12、24、36、48…… • 18 的倍数:18、36、54…… • 最小公倍数 = 36
一个神奇的关系
最大公约数 × 最小公倍数 = 两数相乘比如:6 × 36 = 12 × 18 = 216所以求出最大公约数,最小公倍数就自动出来了!
直接上代码
# 求最大公约数(欧几里得算法)def gcd(a, b): while b != 0: a, b = b, a % b # 把 b 变成新的 a,把 a%b 的余数变成新的 b return a# 求最小公倍数def lcm(a, b): return a * b // gcd(a, b)# 主程序x = int(input("请输入第一个数:"))y = int(input("请输入第二个数:"))print(f"{x} 和 {y} 的最大公约数是:{gcd(x, y)}")print(f"{x} 和 {y} 的最小公倍数是:{lcm(x, y)}")运行,输入 36 和 48:
36 和 48 的最大公约数是:1236 和 48 的最小公倍数是:144一秒搞定!
代码讲解
欧几里得算法(辗转相除法)图解
以 36 和 48 为例:
步骤1:48 ÷ 36 = 1……余 12 → 再用 36 ÷ 12步骤2:36 ÷ 12 = 3……余 0 → 余数为 0,停止!结果:最大公约数 = 12def 是什么?
def 就是"定义一个函数"。函数就像一个魔法盒子:
• 你给它两个数(输入) • 它咔嚓咔嚓算一下 • 输出一个结果
以后每次要求最大公约数,不用重新写代码,直接调用 gcd(36, 48) 就行。
进阶版:一次算多个数
def gcd(a, b): while b != 0: a, b = b, a % b return anumbers = [24, 36, 48, 60] # 要算哪几个数?随便改result = numbers[0]for n in numbers[1:]: result = gcd(result, n)print(f"{numbers} 的最大公约数是:{result}")试试自己验证
先用纸笔算一遍,再用 Python 验证——看看自己对不对!
易错点提醒
/// | / | // |
def 后面的冒号 | def gcd(a, b): | |
a, b = b, a % b |
学校信息课考点预告
本期涵盖:
• 函数定义与调用( def)——初中信息科技重要考点• 算法思维(辗转相除法是人类最早的高效算法之一,适合做算法思想启蒙) • 整除运算 //与取余运算%的对比
家长辅导小贴士
1. 手算一遍再上机:让孩子先用纸笔辗转相除算一个例子(比如 18 和 24),然后再用 Python 验证。理解算法比写出代码更重要。 2. 如果孩子问"为什么求最大公约数用这种方法?",可以这样解释:"想象你有两根绳子,一根 48 厘米,一根 36 厘米。用短绳子去量长绳子,量完剩下的部分(12 厘米)再和原来的短绳子(36)比——不断重复,直到量尽。" 3. 引导发现规律:让孩子试试 gcd(17, 13),发现结果是 1——这就是"互质"的概念。4. 可以延伸到生活中:比如要把一块 48cm × 36cm 的蛋糕切成大小相同的正方形小块,最大能切多大?——就是最大公约数 12cm!
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!