初等数论(未完成)

初等数论

关于取模运算

在模 p 意义下,加减乘法都能保留原有的运算性质

(a mod p + b mod p) mod p = (a + b) mod p

(a mod p − b mod p) mod p = (a − b) mod p

(a mod p) × (b mod p) mod p = (a × b) mod p

类似交换律,结合律,乘法分配律也依然满足 因此,计数题为了方便计算,经常会要求输出答案对某个数取模。

最小公倍数

求解最小公倍数的方法是辗转相除法。

int gcd(int x, int y) {
    if(y == 0) return 0;
    else return gcd(y, x % y);
}

exgcd

对于方程 ax + by = gcd(a, b),exgcd 可以求出一组整数解。

如果 b=0,则 x=1y=0;

否则递归 exgcd(b,a mod b),并求出一组解 x ,y 此时 x=y , y=xaby 是该方程的一组解

exgcd 的一个重要应用是求逆元

逆元及求法

ax1(modb), x即为 a 在mod b 意义下的逆元。

逆元的数学符号是 inv ,a 在mod b 意义下的逆元记作 inv(a,b)。注意不要写反了。

简单来说逆元就是在mod某个数意义下的倒数。例如5x≡1(mod3)x=2是满足10=1(mod3)所以称2是5在mod3意义下的逆.

逆元有什么用呢?在取模意义下,对于某个数做除法是不行的,正确做法是呈上某个数的逆元再取模。

exgcd 求逆元

ax+py=gcd(a,p)=1 那么 ax mod p=1

x 为逆元。

欧拉定理

当 gcd(a, p) = 1 时 aφ(p)=1(modp)

φ(nm)=φ(n)φ(m),n,mP

费马小定理

如果 p 是质数且 pa,则 ap1(modp)

也就是 ap2 mod p 即为 a 的逆元。

利用费马小定理求逆元需要用到快速幂。

int power(int a, int b, int p) {
	int ans = 1 % p;
	for (; b; b >>= 1) {
		if (b & 1) ans = (ans * a) % p;
		a = (a * a) % p;
	}
	return ans;
}
signed main() {
	n = read(), p = read();
	for (int i = 1; i <= n; i++)
		cout << power(i, p - 2, p) << endl;
}

线性递推求逆元

首先我们有一个,111(mod p)

然后设 p=ki+r,(1<r<i<p)也就是 kp/i 的商,r 是余数 。

再将这个式子放到(mod p)意义下就会得到:

ki+r0(mod p)

然后乘上i−1,r−1就可以得到:

kr1+i10(mod p)

i1kr1(mod p)

i1pi(p mod i)1(mod p)

于是,我们就可以从前面推出当前的逆元了。

inv[1] = 1;
for (int i = 2; i <= n; i++)
	inv[i] = (p - p / i) * inv[p % i] % p;

阶乘的逆元

因为有如下一个递推关系。

inv[i+1]=1(i+1)!

inv[i+1](i+1)=1i!=inv[i]

所以我们可以求出n!的逆元,然后逆推,就可以求出1...n!所有的逆元了。

递推式为

inv[i+1](i+1)=inv[i]

所以我们可以求出 i,i!,1i!的取值了。

然后这个也可以导出1i(mod p)的取值,也就是

1i!×(i1)!=1i(mod p)

草稿(不要看)

除法:mod p 后再除不对(p 是质数)

任何一个 b * a, 不知p, 想要回去就乘上a的乘法逆元(乘上逆元相当于做除法)。

逆元求法

拓展gcd:

对于方程 ax + by = gcd(a, b),exgcd 可以求出一组整数解。 如果 b = 0,则 x = 1,y = 0 否则递归 exgcd(b, a mod b),并求出一组解 x ′ , y ′ 此时 x = y ′ , y = x ′ − ⌊ a/ b ⌋y ′ 是该方程的一组解

求解 ax+py=gcd(a,p)=1 那么 ax mod p=1

x 为逆元

费马小定理

ap2,ap1a 的逆元

矩阵 把A变为I的过程就是把I变成A的逆的过程

线性同余方程

裴蜀定理

内容 ax+by=cxZ,yZ ,则其成立的充要条件是 gcd(a,b)|c

证明

它的一个重要推论是:a,b互质充分必要条件是存在整数x,y使ax+by=1.

拓展裴蜀定理 例题

证明

中国剩余定理

中国剩余定理是一种用于求解诸如

{xa1(modm1)xa2(modm2)xak(modmk)

形式的同余方程组的定理,其中,m1,m2,...,mk两两互质的整数,我们的目的,是找出x最小非负整数解。

解法

我们设 M=i=1kmi Mi=Mmi Miti1(modmi)

其中1ik

显然,MM表示所有方程组的模的乘积;Mi 表示除第ii个方程外,其余所有方程的模的乘积;ti 则为Mi的逆元。

我们可以构造出一个解x=i=1kaiMiti

由此,任意解x0即为 x+kM

最小正整数xmin=x0%M

Notice: 有人可能会问,x=i=1kaiMiti中,Miti难道不为1吗?

仔细看,这里x后面跟的是等号,而前面的Miti1(modmi)1只有在mi的剩余系中才成立,换句话讲,在实数系中,Miti=1是不成立的

posted @   djc01  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示