Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

整数乘除法

1.2 整数乘除法

引入

上一课我们学会了两个笨办法:加法是"接着数",减法是"退一格"。

现在来了一道题:一箱苹果摆了 3 层,每层 4 个,一共多少个?用上一课的办法,你可以写 4+4+44+4+4——加三次。如果是 30 层呢?你真的要把 4 写 30 遍、加 29 次吗?

乘法,就是"重复加法"的简写。 反过来问:120 个苹果,每层摆 4 个,能摆几层?这次要重复的是减法——一直减 4,看能减几次。除法,就是"重复减法"的简写。

乘法

探索

拖一拖,观察:

解释

a×ba \times b 就是 bbaa 相加:

a×b=a+a++ab 个a \times b = \underbrace{a + a + \cdots + a}_{b\ \text{个}}

探索环节的长方形正是这个式子的样子——每一行都是一个 aa,一共摆了 bb 行,数完所有格子,就是 a×ba \times b。乘法没有引入任何新东西,它只是给"重复加法"起了个更短的名字。

代码例题

代码解释:这段代码和上一课加法的代码几乎一模一样,唯一的区别是每次加的不是 1,而是 a。跑完 b 次循环,c 就变成了 bbaa 相加的结果——也就是 a×ba \times b

除法

探索

拖一拖,观察:

解释

除法是乘法反着做,也是减法重复做:从 aa 开始,一次减掉一整组 bb,能减几次,商就是几;减到不够再减一整组时停下来,剩下的就是余数

a÷b=q 余 r意思是a=b×q+r,  0r<ba \div b = q\ \text{余}\ r \quad\text{意思是}\quad a = b \times q + r,\ \ 0 \le r < b

探索环节里,每减掉一组,长条就短一截;减到剩下的格子不够一组(比 bb 少)时,剩下的那几格就是余数——它们不够再组成完整的一组 bb

代码习题

提示:乘法的循环是"每加一次,c 变成 c + a";除法的循环反过来是"每减一次,count(组数)该变成什么",和上一课"退一格"用的是同一个技巧。

代码解释while a >= b 表示"只要还够减一整组,就继续减"。每减一次,a 变小、count 变大;减到 ab 还小时循环停止,此时 count 就是商,剩下的 a 就是余数。

数学小故事

古埃及人做乘法,从来不背乘法表——他们只会两件事:把一个数翻倍,和把两个数相加。要算 13×2413 \times 24,他们把 24 不断翻倍(24、48、96、192……),再挑出几个翻倍结果加起来凑成 13 份。这个方法后来在俄国农村一直用到近代,被称为"俄罗斯农民乘法"。

它能成立,靠的正是本课的道理:乘法就是重复加法,只不过古埃及人找到了一条只需要"翻倍+相加"就能抄近道的路。 这条"翻倍"的路,会在你们后面学"进位制"的时候再次出现——它其实就是二进制的雏形。

练习题

  1. 只用"重复加法"的办法,算出 6×56 \times 5

用"重复加法"算 6×56 \times 5,一共要把 6 加多少次?

  1. 只用"重复减法"的办法算出 23÷523 \div 5

  1. 思考题:"除法算的是’能减几次’,乘法算的是’加了几次的结果’,所以除法和乘法互为逆运算。"结合本课的两段代码,用你自己的话解释这句话对不对。