数学试卷最后一道大题?用Python五秒搞定最大公约数和最小公倍数!

四季读书网 2 0
数学试卷最后一道大题?用Python五秒搞定最大公约数和最小公倍数!

数学试卷最后一道大题?用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,停止!结果:最大公约数 = 12
步骤
a
b
a % b(余数)
开始
48
36
12
第1轮
36
12
0
第2轮
12
0
结束,返回 12

def 是什么?

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}")

试试自己验证

两个数
最大公约数
最小公倍数
8 和 12
15 和 25
21 和 28

先用纸笔算一遍,再用 Python 验证——看看自己对不对!


易错点提醒

易错点
为什么
怎么改
//
 写成 /
/
 是普通除法,结果是小数
整除用 //
忘记 def 后面的冒号
Python 函数定义必须有冒号
def gcd(a, b):
不理解 a, b = b, a % b
这是同时赋值的写法
等价于:temp = a; a = b; b = temp % b

学校信息课考点预告

本期涵盖:

  • • 函数定义与调用def)——初中信息科技重要考点
  • • 算法思维(辗转相除法是人类最早的高效算法之一,适合做算法思想启蒙)
  • • 整除运算// 与取余运算 % 的对比

家长辅导小贴士

  1. 1. 手算一遍再上机:让孩子先用纸笔辗转相除算一个例子(比如 18 和 24),然后再用 Python 验证。理解算法比写出代码更重要。
  2. 2. 如果孩子问"为什么求最大公约数用这种方法?",可以这样解释:"想象你有两根绳子,一根 48 厘米,一根 36 厘米。用短绳子去量长绳子,量完剩下的部分(12 厘米)再和原来的短绳子(36)比——不断重复,直到量尽。"
  3. 3. 引导发现规律:让孩子试试 gcd(17, 13),发现结果是 1——这就是"互质"的概念。
  4. 4. 可以延伸到生活中:比如要把一块 48cm × 36cm 的蛋糕切成大小相同的正方形小块,最大能切多大?——就是最大公约数 12cm!

抱歉,评论功能暂时关闭!