这份讲义将小学数学核心概念与C++ 编程函数深度结合,专为 4-5 年级孩子设计。通过对比数学定义和编程实现,帮助孩子理解计算机是如何处理复杂数学运算的。
📐 数学与编程专题:从数学定义到函数实现
核心思想: 计算机不仅能做基础加减乘除,它还拥有强大的“数学函数库”。
一、 数论基础:除法的奥秘
1. 余数 (Remainder)
- 数学定义: 整数除法中,被除数未被除尽的部分。
- 编程实现: 使用取模运算符
%。 - 应用场景:
- 判断奇偶数:
n % 2 == 0(偶数),n % 2 != 0(奇数)。 - 判断倍数:
a % b == 0(a 是 b 的倍数)。
- 判断奇偶数:
2. 因数、约数与倍数
- 约数 (Divisor): 仅针对自然数(0, 1, 2...)。如果 $a \div b$ 余数为 0,则 $b$ 是 $a$ 的约数。
- 因数 (Factor): 范围更广,可以是小数或分数。
- 注意: 在编程比赛(信奥)中,我们通常讨论的是整数范围内的约数。
3. 质数/素数 (Prime Number)
- 数学定义: 在大于 1 的自然数中,除了 1 和它本身以外不再有其他因数的数。
- 编程逻辑: 通过循环(从 2 到 $\sqrt{n}$)检查是否有能整除 $n$ 的数。
二、 取整逻辑:给数据“修剪”边角
在 C++ 中,处理小数到整数的转换有三种武器,需要引入头文件 #include <cmath>:
| 数学概念 | C++ 函数 | 效果 (以 3.1 和 3.9 为例) | 形象记忆 |
|---|---|---|---|
| 下取整 | floor(x) |
$3.1 \to 3$ , $3.9 \to 3$ | 地板: 往下看,取不大于它的最大整数 |
| 上取整 | ceil(x) |
$3.1 \to 4$ , $3.9 \to 4$ | 天花板: 往上看,取不小于它的最小整数 |
| 四舍五入 | round(x) |
$3.1 \to 3$ , $3.9 \to 4$ | 中间线: 满 0.5 就进位,不满就舍去 |
特别注意: * 整数除法:
int a = 5 / 2;结果直接是2(这是 C++ 默认的“截断取整”,类似于下取整)。 * 向上取整小技巧: 在不使用函数时,a除以b向上取整的公式为:(a + b - 1) / b。
三、 常用数学函数库(核心武器)
使用这些函数前,请确保在代码顶部写上:#include <cmath> 或使用万能头。
1. 基础算术函数
- 绝对值
abs(x): 求数到原点的距离。如abs(-5)结果为5。 - 最大值
max(a, b): 返回较大的那个数。 - 最小值
min(a, b): 返回较小的那个数。 - 交换函数
swap(a, b): 交换两个变量里的值(就像把两个杯子里的水对调,需要一个空杯子中转,但swap帮我们做好了)。
2. 幂与根号
- 开根号
sqrt(x): 求 $\sqrt{x}$。如sqrt(9)结果为3。 - 幂函数
pow(a, b): 求 $a^b$(a 的 b 次方)。如pow(2, 3)结果为8。
3. 对数函数
log10(x): 数学里的 $\lg x$。常用于求一个数字是多少位。- 例子: 一个位数为 $n$ 的数字,$n \approx \log10(x) + 1$。
四、 进阶数论:GCD 与 LCM
这是五、六年级奥数的核心,也是编程竞赛的常客。
1. 最大公约数 (GCD)
- 定义: 两个或多个整数共有约数中最大的一个。
- 编程技巧: C++ 自带函数
__gcd(a, b)(注意前面有两个下划线)。
2. 最小公倍数 (LCM)
- 定义: 两个或多个整数公有的倍数中最小的一个。
- 数学公式: $LCM(a, b) = (a \times b) \div GCD(a, b)$。
- 编程注意: 为了防止
a * b爆掉int范围,建议先除再乘:(a / gcd) * b。
五、 总结图表:数学符号 vs 编程代码
| 数学符号/概念 | C++ 代码实现 | 备注 |
|---|---|---|
| $ | x | $ |
| $x^n$ | pow(x, n) |
幂运算 |
| $\sqrt{x}$ | sqrt(x) |
开平方 |
| $\approx$ (四舍五入) | round(x) |
返回最接近的整数 |
| $\lfloor x \rfloor$ (下取整) | floor(x) |
像整数除法 5/2=2 |
| $\lceil x \rceil$ (上取整) | ceil(x) |
常用于分配任务、分装载具 |
| $a \perp b$ (互质) | __gcd(a, b) == 1 |
最大公约数为 1 |
💡 思考题:
如果你要买苹果,每个苹果 1.2 元,你带了 10 元钱,最多能买几个?
* 你应该使用 floor(下取整)、ceil(上取整)还是 round(四舍五入)?
* 答案: floor(即便你能买 8.3 个,老板也不会拆开卖给你,你只能买 8 个)。
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com