咸鱼学妹大战数论入门

有些偷懒没写。

数论-质数

欧拉筛

线性筛

数论-因数倍数(upd:25/1/20)

a,b 最大公因数记为 gcd(a,b),无歧义时可记为 (a,b)

a,b 最小公倍数记为 lcm(a,b),无歧义时可记为 [a,b]

ab 的倍数 = ba 的因数 = b 能整除 a = a 能够被 b 整除 = b|a

gcd

以下来自 AI 聚合:

  1. 交换律:gcd(a,b)=gcd(b,a)

  2. 负数性质:gcd(a,b)=gcd(a,b)

  3. 自身性质:gcd(a,a)=|a|

  4. 零性质:gcd(a,0)=|a|

  5. 模运算性质:gcd(a,b)=gcd(b,amodb)(辗转相除法)

  6. 减法性质:gcd(a,b)=gcd(b,ab)(辗转相减法)

  7. 分配律:如果有一个自然数 m,则 gcd(ma,mb)=mgcd(a,b)

  8. 线性组合性质:mZgcd(a+mb,b)=gcd(a,b)(可用减法性质证明)。

  9. 乘法性质:gcd(ab,m)=gcd(a,m)gcd(b,m)

  10. gcdlcm 关系:a,bN,gcd(a,b)lcm(a,b)=ab

往数集中加入一个数,要么 gcd 不变,要么最多变为原来的 12

数论-同余方程

裴蜀定理

对于任意自然数 a,b,存在整数 x,y 满足 ax+by=gcd(a,b)

线性同余方程

形如 axb(modm),转化为求 ax+my=b 的解。

gcd(a,m)b 则无解。

否则利用 exgcd 求得一组 ax+my=gcd(a,m) 的特解 x0,y0

方程的通解为:

{x=x0+kmgcd(a,m)y=y0kagcd(a,m)

exgcd/拓展欧几里得算法

貌似这种写法比较多。

int exgcd(int a,int b,int &x,int &y){
	if(!b){x=1,y=0;return a;}
	int d=exgcd(b,a%b,x,y);
	int tmp=x;
	x=y;y=tmp-a/b*y;
	return d;
}

将递x,y 交换也可以这样写,注意区别:

int exgcd(int a,int b,int &x,int &y){
	if(!b){x=1,y=0;return a;}
	int d=exgcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}

CRT

NOIP 应该没有这么裸的题吧,EXCRT 什么的就不学了。

对于

{xa1(modm1)xa2(modm2)...xan(modmn)

MOD=i=1nmi,Mi=MODmi

ti 表示 Mi 在模 mi 意义下的逆元。

ans=(i=1naiMiti)modMOD

BSGS 求解高次同余方程

posted @   咸鱼学妹  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示