数论基础
欢迎收看大型连载电视剧——数论基础。
导读:快速幂取模、欧式筛法、裴蜀定理(贝祖定理)、威尔逊定理、费马定理、欧拉函数、欧拉定理、区间逆元(鸽一下)、(扩展)中国剩余定理、约数和定理、Lucas 定理。
快速幂取模
求TLE
,我们需要更快的方法。
根据初中数学,
CODE
ll ksm(ll a, ll b, ll p) {
ll ans = 1;
while (b) {
if (b & 1)//相当于b%2==1,即b为奇数的情况
ans *= a;
a *= a;//将a平方
a %= p;
ans %= p;
b /= 2;
}
return ans;
}
欧式筛法
埃式筛法已经可以做到很优秀的时间复杂度
先将
优化。枚举集合
显而易见时间复杂度为
for (int i = 2; i <= n - 1; i++)
{
if (vis[i] == 0)
prim[++cnt] = i;
for (int j = 1; j <= cnt; j++)
{
if (prim[j] * i > n)
break;
vis[i * prim[j]] = 1;
if (i % prim[j] == 0)
break;
}
}
裴蜀定理(贝祖定理)
它不重要,但他的证明过程却被经常使用,简称:反客为主。
如果
证明:
令
则
即
引理一:如果
证明:用反证法,因为
推论:如果
证明:用反证法,若
引理二:如果
证明:根据推论
根据引理二,裴蜀定理得证。
威尔逊定理
这个威尔就是逊了……
证明:
先证明充分性:
即
设
由
得
移项得:
根据小学的平方差公式得:
由于
即
所以说对于
即
充分性得证。
再证明必要性:
即
即证
如果
若有
若有
必要性得证。
费马定理
你可能会求逆元,但你可能不知道,求逆元的原理是它……
若
证明:
又因为:
由我们上面的结论可知:
由威尔逊定理得
因为
费马定理得证。
该定理多用于求一个数关于质数的逆元。
欧拉函数
乌拉
前置任务积性函数
定义:
积性函数指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。——百度百科
基本性质:
1.有
中
2.若
欧拉函数就是一个kun积性函数,证明什么的就算了。
对于一个正整数
-
1.若
为质数,则 -
2.若有
,那么 。
其中
证明:由于
那么
- 3.令
,根据积性函数的性质
该方法即可快速求出一个数的欧拉函数。
欧拉定理
乌拉,哔~
若
证明:
引理1:设
首先根据裴蜀定理推论
设
则
引理1得证。
根据引理1,得:
化简,得
当
区间逆元
更faster的逆元求法。
如果用费马定理,或者乌拉欧拉定理求逆元需要呼吸都是浪费氧气,火葬都污染环境的出题人想要把
设模数为
由于
设
那么
两边同时乘以
将
由于递推求逆(
inv[1]=1;
for(int i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
中国剩余定理(CRT)
扩展欧几里得后面再补。
方程思想是数学中很麻烦重要的思想,如果我们有一些同余的等式,那么我们可以列出如下的同余方程。
CRT
是解决这种方程组在
因为
根据裴蜀定理引理2,存在
那么易得
易证
对于
即通解为
其中
扩展中国剩余定理
由于这个世界上总有一些奇思妙想,所以它扩展了……
还是那个熟悉的方程组
但今天
先取前2个方程:
移项得:
这个不定方程可以使用扩展欧几里得算法求出,当扩展欧几里得无法求出该方程解时,方程组无解。
若我们求出
其中 gcd
为最大公约数。
将
由于
其中 lcm
为最小公倍数。
同时模
我们在将这个新方程合并到原方程组,最后求出的
约数和定理
对于一个数
对于第
又有
如何线性求一段数的约数给数?
考虑使用线性筛(欧拉筛)。
分类讨论:
1.若
约数仅为
2.若
- 2.1若
的最小质因子为
由于 且为整数。
由于递推求
设
上式可以由
同时需要维护
ps:特别的:
- 2.2若
的最小质因子不为
那么
使用线性筛即可快速求出。
void Gt()
{
d[1]=1;
for(int i=2;i<=maxn-5;i++)
{
if(!vis[i])
{
cnt++;
p[cnt]=i;
d[i]=2;
num[i]=1;
}
for(int j=1;j<=cnt&&p[j]*i<=maxn-5;j++)
{
vis[p[j]*i]=true;
if(i%p[j]==0)
{
d[i*p[j]]=d[i]/(num[i]+1)*(num[i]+2);
num[i*p[j]]=num[i]+1;
break;
}
else
{
d[i*p[j]]=d[i]*2;
num[i*p[j]]=1;
}
}
}
}
Lucas 定理
先放结论:
先证明
得证。
考虑二项式定理,易得:
Ps:除去
此时,令
求证
接着剥削二项式
展开
通过上式,观察
Ps:左边是直接二项式的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现