数学知识学习(持续更新)
数学知识学习(模板)
Ⅰ 质数
⒈ 试除法
⑴ 判定素数
时间复杂度:
⑵ 分解质因数
时间复杂度:与之间
⒉ 埃氏筛
原理:
将 ~ 排成一行,从第1个开始,在每个数上向后把这个数的倍数全部筛掉,这样就可以只剩下质数了。
时间复杂度:
附:一般, 会忽略不计,也就是说,时间复杂度近似 。但是,真正能做到 的算法是下一个算法——线性筛。
Code - 模板
Code - 用法
记
我们发现这里面似乎会对某些数标记了很多次其为合数。有没有什么办法省掉无意义的步骤呢?请看下一个算法!
⒊ 线性筛法(埃氏筛优化)
优化方式:
我们在上一个算法中提到埃氏筛会对某些数标记了很多次其为合数,如果能让每个合数都只被标记一次,那么时间复杂度就可以降到 了。
时间复杂度:
Code - 模板
Code - 用法
分析
对于代码 if(i%primes[j]==0)break;
, 只会被最小的质因子筛掉。
证明如下:
这里,我们分两种情况来讨论。
i%primes[j]==0
,则primes[j]
一定是i
的最小质因子,primes[j]
也一定是primes[j]*i
的最小质因子。i%primes[j]!=0
,则primes[j]
一定小于i
的所有质因子,primes[j]
也一定是primes[j]*i
的最小质因子。
证毕!
Ⅱ 约数
⒈ 试除法求约数
时间复杂度:
Code - 模板
注意:这个模板求的约数是以 vector
的类型返回的,所以,在使用时,要小心。具体使用方法看下面的用法代码。
Code - 用法
⒉ 约数个数与约数和专题
0 注
本小节的内容部分摘自这里
⑴ 基本定理
算术基本定理:设
约数个数公式:
约数和公式:
⑵ 求单个数的约数个数
⑶ 求数字连乘积的约数个数
⑷ 求单个数字的约数和
⑸ 求数字连乘积的约数和
⑹ 筛法求区间内的约数个数与约数和
⑺辗转相除法求最大公约数
⒊ 欧拉函数
定义
在数论,对正整数 ,欧拉函数是小于等于 的正整数中与 互质的数的数目。
定理
设
那么
Code - 求单个数的欧拉函数
求 到 的欧拉函数之和(欧拉筛)
分析
Code
__EOF__

本文作者:绿树公司
本文链接:https://www.cnblogs.com/wp-lvshu/p/15802232.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/wp-lvshu/p/15802232.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构