火龙信奥
  • 分享
  • 课程
  • 在线题库
  • CSES
    • GESP
    • CSP
  • 打卡
    • 代码对战
    • 快速对战
  • 题单
  • 知识课堂
  • 在线比赛
  • 团队
  • 荣誉墙
  • 商城
  • 登录 / 注册

Level 1:常见函数

作者: 作者的头像   huolong , 时间:2022-03-07 12:19:56 , 所有人可见, 阅读  144

这份讲义将小学数学核心概念与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

关于火龙

  • 关于我们
  • 学员获奖
  • 预约试听
  • ACM课程
  • CSP课程
  • 学习指南

帮助中心

  • 用户协议
  • 打字练习 HOT
  • 在线画图
  • DevC++下载
  • CSP报名
  • GESP官网

推荐课程

  • C++零基础入门(可试看)
  • C++进阶提升
  • GESP考级辅导
  • GESP打卡
  • CSP-J/S打卡

公众号

火龙信奥公众号二维码

© 2017-2026 义乌市睿码科技有限公司版权所有 浙ICP备2021013995号

火龙信奥
请输入登录信息


请完成安全验证
验证码底图 滑块
向右拖动滑块完成验证
请输入用户名 / 绑定的手机号码



请输入注册信息(手机号验证码注册)





验证码5分钟有效,60秒内不可重复获取,每日最多3次

微信登录

微信登录二维码

正在生成二维码...

账号已过期,请续期。
去续期

绑定手机号

📱

为了更好地保护您的账号安全,享受完整的平台服务

请您尽快绑定手机号码