Damn bro what the heck browser ya using I can't understand

质数求解

欧拉(乌拉(雾)):

aϕ\(n) 1\(modn)
拓展一下就是:
ac=
1.ac mod ϕ\(m) gcd(a,m)=1
2.ac mod ϕ\(m)+ϕ\(m) gcd(a,m)1  c ϕ\(m)

费🐎小定理(那就是nmslbushi

ap11\(

p是质数
aa11
=> aap21

威尔逊定理

\(p1)!1\(modp)
是p为质数的条件,不考

中国剩余定理(buni


真的看不懂=_=|||
上代码吧:

typedef long long ll;
ll ksm(ll a,ll b,ll p)
{
//省略,去这里:

点我滚过去

}
ll inv(ll a,ll b)
{
return ksm(a,b-2,b);
}
ll crt(int n,ll *a,ll *m)
{
ll M=1,ret=0;
for(int i=1;i<=n;i++)
M*=m[i];//将所有数求出来
for(int i=1;i<=n;i++)
{
ll w=M/m[i];//求每个Sn
ret=(ret+w*inv(w,m[i])*a[i])%M;
}
return (ret+M)%M;
}
}

质数筛

质数的倍数就质数
所以可以直接筛所有的质数倍数,剩下的一定是质数
当循环到当前数的因子的时候,可以跳出循环了,因为这之后的分解已经包括了当前的因子
CODE:

int p[N],tot;
bool vis[N];
void gen(int n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i])
p[++tot]=i;
for(int j=1;j<=tot&&i*p[j]<=n;j++)
{
vis[i*p[j]]=1;
if(i%p[j]==0)
break;
}
}
}

积性函数

ab互质,且f(ab)=f(a)f(b),则该函数为积性函数
带入线性筛:

int p[N],tot;
bool vis[N];
void gen(int n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
p[++tot]=i;
phi[i]=i-1;
}
for(int j=1;j<=tot&&i*p[j]<=n;j++)
{
vis[i*p[j]]=1;
if(i%p[j]!=0)
phi[i*p[j]]=phi[i]*phi[p[j]];//积性函数
if(i%p[j]==0)
phi[i*p[j]]=phi[i]*p[j];//欧拉函数
break;
}
}
}
posted @   ComputerEngine  阅读(255)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示