线性筛法与积性函数
来源:互联网 发布:自考本科 留学 知乎 编辑:程序博客网 时间:2024/05/16 17:15
神犇的博客:浅谈一类积性函数的前缀和
线性筛法
//线性筛法求质数。memset(mark,0,sizeof(mark));pt=0;for(int i=2;i<=N;i++){ if(!mark[i]){ prime[pt++]=i; mark[i]=i; } for(int j=0,u=dmin(mark[i],N/i);j<pt&&prime[j]<=u;j++) mark[prime[j]*i]=prime[j];}
保证 1~n 内的每一个合数被且只被除1外最小的因子筛过一次,对于当前处理到的 i 枚举小于
证明正确性:每一个合数被且只被除1外最小的因子筛过一次。
设合数 P=p1^k1
其中
若P不是被 P’=p1^(k1-1)
则任意一个除去一个其他因子
积性函数
1.定义。若
若
2.性质。
1)
2)
欧拉函数
1.定义:
其中p1, p2……pn为x的所有质因数(只出现一次),x是不为0的整数。
2.数学意义:
3.性质。
1)φ(n)为积性函数,非完全积性。
2)欧拉定理:若
3)
4)线性筛法原理:
//线性筛法求欧拉函数。memset(phi,0,sizeof(phi));pt=0,phi[1]=1;for(int i=2;i<=N;i++){ if(!phi[i]){ prime[pt++]=i; phi[i]=i-1; } for(int j=0,u=N/i;j<pt&&prime[j]<=u;j++) { if(i%prime[j]==0) { phi[prime[j]*i]=phi[i]*prime[j]; break; } else phi[prime[j]*i]=phi[i]*(prime[j]-1); }}
莫比乌斯函数
神犇的详解
1.莫比乌斯反演:若
2.应用:通过
3.莫比乌斯函数
1)函数式:
2)求解
//线性筛法求莫比乌斯函数。memset(miu,0,sizeof(miu));memset(mark,0,sizeof(mark));pt=0,miu[1]=1;for(int i=2;i<=N;i++){ if(!mark[i]){ prime[pt++]=i; miu[i]=-1; } for(int j=0,u=N/i;j<pt&&prime[j]<=u;j++) { mark[prime[j]*i]=1; if(i%prime[j]==0) { miu[prime[j]*i]=0; break; } else miu[prime[j]*i]=-miu[i]; }}
注:
乘法逆元
1.定义:如果
2.应用。:
目标:求解
若
设
则
3.证明。
若
则
写作
通过exgcd求得x,y的整数解。
//扩展欧几里得算法求逆元。void exgcd(int a,int b,ll &x,ll &y){ if(b==0)x=1,y=0; else { exgcd(b,a%b,x,y); ll tmp=x; x=(y+mod)%mod; y=(tmp-(a/b)*y%mod+mod)%mod; }}
若要求
exgcd的复杂度为
神犇的证明
//线性筛法求逆元。inv[1]=1;for(int i=2;i<maxn;++i) inv[i]=(p-p/i)*inv[p%i]%p;
终于都懂了!bravo。
- 线性筛法与积性函数
- 【数论】线性筛与积性函数
- 数论 - 线性筛法与积性函数
- 线性筛法 与 线性求欧拉函数 的计算模板
- 线性筛法与欧拉函数
- 【线性筛法求解积性函数】Archer
- 利用积性函数实现的各种线性筛法
- facsum (线性筛 积性函数)
- 线性筛法+求欧拉函数
- 线性筛法求解积性函数(莫比乌斯函数)
- HDU 5528 Count a * b(线性筛+积性函数)
- 积性函数的性质及证明 + 线性筛
- 欧拉函数线性筛法详解
- 欧拉函数 线性筛法
- [笔记]: 欧拉函数线性筛法
- 线性筛素数 线性筛欧拉函数
- 再谈哈希函数与线性探测再散列
- 线性筛与欧拉函数、莫比乌斯函数
- 20170825阿里在线笔试之菜鸟仓库货架格子编号
- updatedb 更新locate搜索的数据库
- 2018阿里软件工程师笔试题
- 暑假集训总结
- Python爬虫数据存储MySQL【2】模拟登录网页
- 线性筛法与积性函数
- Python面向对象
- Android 电话系统框架介绍
- 阿里巴巴2018届算法岗招聘题
- 安装go语言web框架revel
- 自己搭建自动化巡检系统(二) telnet远程登录
- Hbuilder中配置cmd
- 使用R画Wilkinson图
- Java跳出循环-break和continue语句