数论笔记(2025.01.22) 持续更新
整除及证明
特殊性质 (应用于定理证明)
质数有无穷多个
证明:
假设质数有最大数
令质数有
个,最大的质数为 可构造一数
所有质数之积( ) 对于
必然满足不整除于 故
为质数 且 所以没有最大的质数 假设不成立
所有大于2的质数都可以唯一地表示成两个平方数之差
证明:
大于2的质数都为偶数 即对于任意质数
有 而对于奇数k必有
由此得证,且可同时证明两个平方数的差值为
唯一分解定理
任意整数
因子个数
对
例题:LuoguP1075
核心代码:
bool prime(long long n) { if(n==1) return false; if(n==2) return true; for(long long i=2;i<=sqrt(n);i++) if(n%i==0) return false; return true; }
辗转相除: /可重复贡献性
例题: CF1562A
核心代码:
int k=r/2+1; if(k>=l)//case1 //l在左边 cout<<r%k<<"\n"; else cout<<r-l<<"\n";
算法:在高精度计算中避免取模
1.
2.
3.
4.
例题:LuoguP2152
注意:高精度要压位!!! 要不然过不了
其他套模板即可
最小公倍数计算公式
int lcm(int a,int b) { return a/gcd(a,b)*b; }
例题:AT_abc152_e
暴力思路 (直接照搬过不了此题):
for(int i=1;i<=n;i++) { cin>>a[i]; lcm=a[i]*lcm/__gcd(a[i],lcm); }
埃氏筛
代码如下,复杂度
注意要学习埃氏筛的时间复杂度计算方法
vector<int> Prime; bool isPrime[maxn]; void Sieve(int n) { memset(isPrime,1,sizeof isPrime); isPrime[0]=isPrime[1]=0; for(int i=2;i<=n;++i) { if(isPrime[i]) Prime.push_back(i); for(int j=i*2;j<=n;j+=i) isPrime[j]=0; } return; }
欧拉筛
写法1:数组模拟 应用于(我自己打的 有bug可以反映)
void ola() { for(int i=2;i<=n;i++) { if(vis[i]==0) prime[++cnt]=i; for(int j=1;j<=cnt&&prime[j]*i<=n;j++) { vis[prime[j]*i]=1; if(i%prime[j]==0) break; } } }
写法2:
void Sieve(int n) { memset(isPrime,1,sizeof isPrime); isPrime[0]=isPrime[1]=0; for(int i=2;i<=n;++i) { if(isPrime[i]){ Prime.push_back(i); } each(ver,Prime) { // 从小到大遍历已经筛出来的质数 if(1ll*i*ver>n) break; isPrime[i*ver]=0; if(i%ver==0){ break; } } } }
同余
符号表示:
01.若
且 则 02.若
且 则 03.若
且 则
例题:LuoguP3861
核心思路:
一种状态转移
另一种状态转移自己推 太长了不想打
12.费马小定理+乘法逆元
i.费马小定理
为质数且 则
为质数且 则
ii.乘法逆元
证明:
(费马小定理) 有
因为
有
有一解为:
求逆元代码:
const int mod = 998244353; int qpow(int a,int b,int p=mod) { int res=1,tmp=a; while(b) { if(b&1) res=1ll*res*tmp%p; tmp=1ll*tmp*tmp%p; b>>=1; } return res; } int inv(int k){ return qpow(k,p-2,p); }
例题:Luogu P2613
思路:求逆元+取模即可
本文作者:SamXia
本文链接:https://www.cnblogs.com/SamXia/p/18691756
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步