数学基础——质数
算术基本定理(唯一分解定理)
-
内容 :
-
应用
- 分解质因数
int cnt,p[N],a[N];
void div(ll n) {
int cnt = 0;
for(int i = 2;i*i <= n; ++i) {
if(n%i == 0) {
p[++cnt] = i;
while(n%i == 0) {
n /= i,++a[cnt];
}
}
}
if(n > 1) {
p[++cnt] = n;
++a[cnt];
}
}
-
求约数个数
约数个数函数
d(n)=∏(ai+1)d(n)=∏(ai+1)
-
求约数和
约数和函数
σ(n)=∏(ai∑j=0pj)=∏1−pai+1i1−piσ(n)=∏(ai∑j=0pj)=∏1−pai+1i1−pi
线性筛
-
原理 : 保证每个数只会被其最小的质因子筛去
-
实现 : 设vivi表示数ii的最小质因子,依次枚举每个数,若vi==0vi==0(即未被筛),说明其是一个质数
接着依次枚举小于vivi的已经筛出的质数(设为pp),可知pp为合数p∗ip∗i的最小质因数(p<vip<vi)
注意p∗ip∗i不能超过nn
int v[N],p[N],p_cnt;
void primes(int n) {
for(int i = 2;i <= n; ++i) {
if(!v[i]) v[i] = i,p[++p_cnt] = i;
for(int j = 1;j <= p_cnt; ++j) {
if(p[j] > v[i] || p[j]*i > n) break;
v[p[j]*i] = p[j];
}
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用