上节课我们吃透了进制转换与位运算的核心知识,今天开启Python数学算法的学习,聚焦常用内置数学函数、整除判定、质数合数、同余问题以及最大公约数与最小公倍数,搭配实操代码和解题思路,新手也能轻松上手,代码可直接复制运行,夯实编程与数学结合的基础👇📌 温故知新:往期核心知识回顾
在学习新内容前,先梳理往期重点,做好知识衔接,同时呼应课堂提问要点,快速巩固基础:一、程序基础结构
程序的三大基本结构为顺序结构、分支结构、循环结构,这是编写所有代码的核心框架,不同结构组合能实现各类复杂逻辑。二、异常处理要点
使用try-except语句的核心目的,是防止程序因运行错误异常终止,增强程序的稳定性和容错性,即便代码出现报错,也能正常执行后续逻辑。三、进制相关知识
常见进制:十进制、二进制、八进制、十六进制,是计算机数据表示和运算的基础;前缀含义:0b代表二进制、0o代表八进制、0x代表十六进制,无前缀的数字默认为十进制;进制换算:二进制1110转换为十六进制结果为E,十六进制1A转换为十进制结果为26。
🔍 Python内置数学函数初识
内置函数是Python提前封装好、可直接调用的功能代码,无需额外编写逻辑,而数学函数主要用于数据处理、数值计算,能大幅简化代码编写,提升运算效率,接下来我们逐一学习常用内置数学函数的用法与实操。✅ pow函数:幂运算
作用:专门用于求解一个数的指定次方,即计算a的b次方,语法简洁,调用便捷。# 计算2的3次方x = pow(2, 3)# 输出结果:8print(x)
✅ abs函数:求绝对值
作用:求解数值的绝对值,绝对值表示数轴上数字到原点的距离,永远大于等于0;正数的绝对值是本身,负数的绝对值是相反数,0的绝对值是0。# 求5的绝对值x = abs(5)# 求-7的绝对值y = abs(-7)# 输出结果:5 7print(x, y)
✅ divmod函数:同时取商和余数
作用:一次性计算两个数相除的商和余数,返回结果为元组类型,兼顾商和余数的获取,简化分步计算步骤。# 求解10除以3的商和余数result = divmod(10, 3)# 输出结果:(3, 1),第一个数为商,第二个数为余数print(result)
✅ sum函数:序列求和
作用:计算列表、元组等可迭代序列中所有数字元素的总和,仅适用于数值型序列,非数值会报错。# 定义目标列表li = [1, 3, 5, 7, 9]# 计算列表元素和,输出结果:25print(sum(li))
✅ round函数:四舍五入
作用:按照指定小数位数对数值进行四舍五入,可灵活控制结果精度,满足不同计算需求。# 待处理小数p = 3.1415926# 保留3位小数,四舍五入后输出结果:3.142print(round(p, 3))
✅ max/min函数:求最值
作用:max函数提取序列中的最大值,min函数提取序列中的最小值,适配列表、元组、集合等各类数值序列。# 定义目标列表li = [5, 3, 99, 2, 0]# 输出最大值:99print(max(li))# 输出最小值:0print(min(li))
📐 核心知识点1:整除问题与尾数判别法
整除是数论的基础概念,指两个整数相除,商为整数且余数为0,掌握整除判定技巧,能快速判断数的整除特性,无需复杂计算,核心技巧为尾数判别法。一、基础整除判定
能被2整除的数:末尾是0、2、4、6、8的偶数,如100、102、104等;能被5整除的数:末尾是0或5的数,如100、105等;二、尾数判别法(核心)
除数 | 判定规则(看被除数末尾) |
|---|
2、5 | 只看最后一位 |
4、25 | 只看最后两位 |
8、125 | 只看最后三位 |
三、实操案例
判断575能否被4/25整除:看末两位75,75不能被4整除、能被25整除,故575能被25整除,不能被4整除;判断3888能否被8/125整除:看末三位888,888能被8整除、不能被125整除,故3888能被8整除,不能被125整除;判断100个6组成的数能否被4整除:看末两位66,66不能被4整除,故该数不能被4整除。四、编程实践:判断能否被5整除
# 输入待判断的整数x = int(input('请输入您要判断的数字:'))# 判定能否被5整除(末尾为0或5)if x % 10 == 0 or x % 10 == 5: print('YES')else: print('NO')
🧮 核心知识点2:质数与合数
质数与合数是自然数的重要分类,依据因数个数划分,是数论算法的核心考点,掌握判定方法,能高效解决质数筛选、因数统计等问题。一、核心定义
质数(素数):只有1和它本身两个因数的自然数,如2、3、5、7等;合数:除了1和它本身,还有其他因数的自然数,如4、6、9、10等;特殊说明:1只有1个因数,既不是质数,也不是合数。二、质数判定方法
方法一:因数统计法
核心思路:统计目标数的因数个数,若因数仅有2个,则为质数,反之则为合数。方法二:试除法(基础版)
核心思路:遍历2到目标数减一的所有数,判断能否整除,若存在能整除的数,则不是质数,反之则为质数。# 输入待判断的整数x = int(input('请输入您要判断的数字:'))# 定义标记,默认是质数flag = True# 遍历2到x-1,试除判断for i in range(2, x): if x % i == 0: # 存在因数,不是质数 flag = False break# 输出判定结果if flag: print(f'{x}为质数!')else: print(f'{x}不是质数!')
方法三:优化试除法(高效版)
优化逻辑:判断质数时,只需遍历2到目标数的平方根即可,无需遍历全部数,大幅减少循环次数,提升效率。# 导入数学模块,调用平方根函数import math# 输入待判断的整数x = int(input('请输入您要判断的数字:'))# 计算x的平方根并取整,+1保证边界覆盖p = int(math.sqrt(x)) + 1flag = True# 遍历2到平方根,试除判断for i in range(2, p): if x % i == 0: flag = False break# 输出判定结果if flag: print(f'{x}为质数!')else: print(f'{x}不是质数!')
🔢 核心知识点3:同余问题
同余指两个数除以同一个数,所得余数相等,这个除数称为“模”,掌握同余性质,能快速解决余数相关的数学难题,简化复杂计算。一、核心概念
余数:整数除法中,不能整除时产生的剩余数,记作a mod b = c(b≠0);同余:若a mod m = c,d mod m = c,则称a和d对模m同余;核心性质:若a和d对模m同余(a二、实操案例
案例1:两位数加3除以3余1,加4除以4余1,加5除以5余1,求这个数。解题思路:该数减1后能同时被3、4、5整除,3、4、5的最小公倍数为60,故这个数为60+1=61。# 遍历所有两位数for i in range(10, 100): # 满足同余条件 if (i+3) % 3 == 1 and (i+4) % 4 == 1 and (i+5) % 5 == 1: print(i) break
案例2:23、51、72除以同一个大于1的自然数,余数相等,求这个数。解题思路:根据同余性质,51-23=28,72-51=21,求28和21的公约数,结果为7。# 遍历2到72,查找符合条件的数for i in range(2, 73): if 23 % i == 51 % i and 51 % i == 72 % i: print(i) break
⚙️ 核心知识点4:最大公约数与最小公倍数
最大公约数(GCD)和最小公倍数(LCM)是数论核心运算,两者关联紧密,掌握求解方法,能解决分数约分、倍数匹配等实际问题。一、核心定义
最大公约数:两个数公共因数中最大的那个数,如12和8的最大公约数是4;最小公倍数:两个数公共倍数中最小的那个数,如12和8的最小公倍数是24。二、求解方法与代码
1. 最大公约数(试除法)
核心思路:取两数中较小值,从该数向下遍历,找到第一个能同时整除两数的数,即为最大公约数。# 输入两个整数m = int(input())n = int(input())# 取较小值作为起始判断数i = min(m, n)# 向下遍历查找公约数while i > 0: if m % i == 0 and n % i == 0: print(i) break i -= 1
2. 最小公倍数(试除法)
核心思路:取两数中较大值,从该数向上遍历,找到第一个能被两数同时整除的数,即为最小公倍数。# 输入两个整数m = int(input())n = int(input())# 取较大值作为起始判断数j = max(m, n)# 向上遍历查找公倍数while True: if j % m == 0 and j % n == 0: print(j) break j += 1
3. 最大公约数(辗转相除法,高效版)
核心思路:大数除以小数取余数,再用除数除以余数,直至余数为0,此时的除数即为最大公约数,效率远高于试除法。# 输入两个整数m = int(input())n = int(input())# 辗转相除逻辑while m % n != 0: temp = m % n m = n n = temp# 输出最终公约数print(n)
💡 拓展实战:水仙花数求解
水仙花数是特殊三位数,指每个数位上数字的立方和等于其本身,结合数据类型转换即可快速求解,强化数字处理能力。# 遍历所有三位数for i in range(100, 1000): # 转换为字符串,拆分数位 num_str = str(i) total = 0 # 遍历每个数位,计算立方和 for char in num_str: total += int(char) ** 3 # 判断是否为水仙花数 if total == i: print(i)
📌 课堂核心总结
内置数学函数:掌握pow、abs、divmod、sum、round、max、min的用法,快速实现基础数值计算;整除判定:巧用尾数判别法,快速判断2、4、5、8、25、125的整除特性;质数合数:区分质数、合数、1的定义,掌握试除法(含优化版)判定质数;同余问题:牢记同余性质,利用余数规律解决实际数学问题;公约公倍数:熟练运用试除法、辗转相除法,求解最大公约数与最小公倍数。💬 互动留言
今天的数学算法知识点你掌握了吗?试着独立编写质数判定、最大公约数求解代码,在评论区分享你的实操成果呀~关注我,下节课解锁数学算法进阶内容,玩转更复杂的数论实战~ 下次再见!