初等数论(未完成)
初等数论
关于取模运算
在模 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 可以求出一组整数解。
如果 ,则 ,;
否则递归 ,并求出一组解 , 此时 , 是该方程的一组解
exgcd 的一个重要应用是求逆元
逆元及求法
当 , x即为 a 在mod b 意义下的逆元。
逆元的数学符号是 inv ,a 在mod b 意义下的逆元记作 inv(a,b)。注意不要写反了。
简单来说逆元就是在mod某个数意义下的倒数。例如5x≡1(mod3)x=2是满足10=1(mod3)所以称2是5在mod3意义下的逆.
逆元有什么用呢?在取模意义下,对于某个数做除法是不行的,正确做法是呈上某个数的逆元再取模。
exgcd 求逆元
那么
x 为逆元。
欧拉定理
当 gcd(a, p) = 1 时
费马小定理
如果 p 是质数且 ,则
也就是 即为 的逆元。
利用费马小定理求逆元需要用到快速幂。
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;
}
线性递推求逆元
首先我们有一个,
然后设 也就是 是 的商, 是余数 。
再将这个式子放到()意义下就会得到:
然后乘上i−1,r−1就可以得到:
于是,我们就可以从前面推出当前的逆元了。
inv[1] = 1;
for (int i = 2; i <= n; i++)
inv[i] = (p - p / i) * inv[p % i] % 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 ′ 是该方程的一组解
求解 那么
x 为逆元
费马小定理
是 的逆元
矩阵 把A变为I的过程就是把I变成A的逆的过程
线性同余方程
裴蜀定理
内容 , ,则其成立的充要条件是
证明
它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1.
拓展裴蜀定理 例题
中国剩余定理
中国剩余定理是一种用于求解诸如
形式的同余方程组的定理,其中, 为两两互质的整数,我们的目的,是找出的最小非负整数解。
解法
我们设 M=
其中。
显然,MM表示所有方程组的模的乘积; 表示除第ii个方程外,其余所有方程的模的乘积; 则为的逆元。
我们可以构造出一个解
由此,任意解即为
最小正整数解
Notice: 有人可能会问,中,难道不为1吗?
仔细看,这里x后面跟的是等号,而前面的只有在的剩余系中才成立,换句话讲,在实数系中,是不成立的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫