扩展欧几里得和乘法逆元,欧拉函数 知识点
一。欧拉函数:1.通项公式 fai(n)=n*(1-1/pi) 求一个数的互质的数的个数
2 当p为素数
https://www.cnblogs.com/kuangbiaopilihu/p/12921745.html#433-%E7%BA%BF%E6%80%A7%E6%B1%82%E9%80%86%E5%85%83
fai(p)=p-1
fai(p^k)=p^k-p^(k-1) 设数枚举t*p加减
若n%p=0 fai(n*p)=fai(n)*p 用通项公式化简,pi是相同的
若n%p!=0 fai(n*p)=fai(n-1)*(p-1) 套通项公式,化简就行,p只能是
质数,不然就会有其他质因数,就不具有规律了
3 gcd(a,b)=1时,fai(ab)=fai(a)*fai(b)
质因数:都不包含1,质数包含自己
与n互质的数:包含1,不包含自己(最大公因数是1)
void oulafai(int a)//求一个数的互质的数的个数
{
int e=(int)sqrt(e+0.5);int ans=a;
_f(i,2,e)
{
if(a%i==0)
{
ans=ans/(i)*(i-1);
while(a%i==0)a/=i;
}
}
if(a>1)ans=ans/(a)*(a-1);
return ans;
}
求1--n所有的,用线性筛法求素数
在循环prime[],加上fai[prime[i]]=prime[i]-1
循环筛素数,加上
if(i%prime[cnt]==0)fai[i*prime[cnt]]=prime[cnt]*fai[i]
else fai[]=(prime[cnt]-1)*fai[i]
二。
费马小定理
要求:p是素数,p和a互质 {素数模下指数同余}
性质:a^(p-1) 三等号 1(mod p)
欧拉定理
要求:gcd(a,p)=1
性质:a^(fai(p))三1(mod p)//特例p是质数就是费马
拓展欧拉定理
和a^b,指数可以再mod一个数
三。最大公约数
1.辗转相除法求两个数最大公约数
gcd(a,b)=gcd(b,a%b)
void gcd(int x,int y)
{
int t=x%y;
while(t)
{
x=y,y=t,t=x%y;
}
return x;
}//余数为0,mod数就是最大公约数
lcm(a,b)*gcd(a,b)=a*b//就是乘起来恰好构成这两个数
四。求一组整数解
int jfc(int a,int b,int& x,int& y)//求解ax+by=1 x1=y2,y1=x2-a/b*y2 ,顺便算一下最大公约数
{
if(b==0)
{
x=1,y=0;return a;//就是最大公约数
}
int ret=jfc(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return ret;
}
如果让结果满足一些要求,
ax+by=c
先ax+by=1,
x=x0+tA
y=y0+tB
A=-b/gcd(a,b)
B=a/gcd(a,b) t是正整数
拓展总结:ax+by=c
有解的情况:c mod gcd(a,b)==0
如果要求x的最小整数解
用 ( (x/gcd(a,b)*c)mod (y/gcd(a,b))+y/gcd(a,b) )mod (l/gcd)就可以
特殊解 最小解 防止负数 最小保证
如果要求x,y都大于0并且x最小情况下y最小
这么写就可以:
(这里还加了一个就是 我要求by-ax=c,先求出ax+by=c,然后真正的解是-x,y ,所以x*-1,然后你往上调整解的时候,应该让+的成立,所以系数a也要变成负的)
x*=-1,a*=-1;
while(x<0||y<0){
x+=b/ans;
y-=a/ans;
}
同余:a和b mod m 余数相同,则a三b(mod m)
五。乘法逆元
拓:欧拉定理:gcd(a,p)==1
return qpow(a,fai(p)-1,p)
way2:拓展欧几里得定理:gcd(a,p)==1
a*x mod p=1 a*x=b*y+1
a*x+b*y=1求得x整数解
way3:求连续逆元
void ny(int n,int p)
{
_f(i,2,n)
{
ny[i]=(long long)(p-p/i))*ny[p%i]%p;//非负数
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】