[关闭]
@ZCDHJ 2018-10-05T13:09:16.000000Z 字数 4784 阅读 650

数学 总结

数学


数学 总结

初等数论

欧拉筛法(线性筛质数)

欧拉筛法中的每个合数都只会被其最小的质因子(也可以说是最大的因子)筛去,所以复杂度是 的。

过程大概就是枚举那每一个最大的因子与最小的质因子,需要注意的是如果那个最小的质因子是另一个枚举的因子的质因数,那么后面的质因子就应不再枚举,这里令素数表为

如果 ,那么 的最小质因子就是 及后面的质数也一样,如果这时不退出的话一些数就会被重复筛去。

算术基本定理

任意一个大于 的整数 都能分解为几个质数之积,就像下面这个形式


因为这个分解是惟一的,所以这个定理又叫”唯一分解定理“。

为什么是唯一的呢?因为如果任意一个 减一,那就需要再补一个 的因子,然而 都是质数,所以分解唯一。

其实就是分解质因数。但是这个暴力枚举的复杂度是

之前说了线性筛能够保证用每一个数最小的质因子来筛去某一个数,其实就是可以 求出每个数最小的质因子,那么就可以用来加速多个数质因数分解。前几天打 cf 的时候遇到了这样的一道题。。。

一些算术基本定理的推论:

Codeforces 1047C

裴蜀定理(Bézout's identity)

对于不定方程 ,只有当 时才有整数解。

欧几里得算法

这个没啥好讲的,但我还是要证明一下。

。对于 任意公因数 , 那么 ,也就是 ,所以 的公因数集合与 的公因数集合相同。

扩展欧几里得

根据前面的裴蜀定理可知,不定方程 ,只有当 时才有整数解 。那么我们只要求出一组 的特解,就可以求出一组原方程的特解。

那么该怎么求解呢?

扩展欧几里得可以解决这个问题,求出一组 最小的解。

推导过程:

​ 我们已知 ,那么 。化简得 。因为只要求一组解,我们可以直接这样子:


那么直接递归求解就行了,至于为什么能求出一组 最小的解,我也很迷茫

更相减损术

这个算法来自《九章算数》,它原本是为约分而设计的,但适用于任何求最大公因数的问题。

  1. 可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。

请自行翻译

大概就是有两个式子

这里默认

因为对于 的任意公因数 ,所以上式得证。

还有 ,这个式子显然成立。

在高精度下求 gcd 可考虑用更相减损术代替欧几里得。

Stein 算法

其实更相减损术很像这个 Stein 算法

众所周知,欧几里得算法求 gcd 很♂快

但是在算大整数的时候,需要试商,就会变慢。Stein 算法很好的解决了这个问题。

如果 中有一个奇数,那我们就可以将另一个数中的质因子 全部约去,因为这个时候两数的 gcd 不可能是 的倍数。

剩下的就和更相减损术差不多。

欧拉函数

欧拉函数等于 。也就是与 互质并小于 的数的个数。

算数基本定理有 ,那么

大概证明一下
的质因子 会在与 互质的数集合中筛去 个数,质因子 同理。因为一个数的质因子不会大于 ,所以 一定小于 ,那么在 中, 的倍数就会被筛去两次,所以容斥一下,答案加上
化简可得

分解 的质因数时可以求出

51NOD1040 最大公约数之和

然后有些性质

那么就可以线性筛出 内的

欧拉定理

如果正整数 互质,就有

还是如果 互质,,那么这个就可以在指数很大的时候用来降幂。

费马小定理

为素数,有

其实就是欧拉定理中的 为素数时两边乘个

乘法逆元

互质时,有一个正整数 满足 。称这个数 在模 意义下的乘法逆元。化简得 。想一想,前面欧拉定理是不是讲过 “如果正整数 互质,就有 。”?那么 就是 的乘法逆元,直接上快速幂。当然也可以用扩展欧几里得来求方程 的解。

但是还有一种线性递推逆元的办法。

现在要求 的逆元 ,设

那么有,两边乘上 。最后有 。也就是

但是这样可能求出来的逆元是个负数,所以加上个 。也就是 。那么这样子就可以线性递推出 范围内模 意义下的逆元了。

然后因为同余的传递性,。打个表以及根据上面的性质可以发现,其实在 的时候, 的逆元是有循环节的。所以在求 的逆元的时候,可以直接先把

中国剩余定理

有同余方程组


其中 两两互质。

中国剩余定理,是中国古代数学家孙子智慧的结晶,用来求解如上的一元线性同余方程组。

现在令 ,也就是所有 的 LCM,,也就是 在模 下的乘法逆元。所以 。 这时, 就是方程组的一个特解。

方程的通解又可以表示为 。所以某些题在求最小正整数解的时候,可以直接模个 ,再加至非负整数。

TJOI2009 猜数字

扩展中国剩余定理

现在 不再互质了怎么办?

扩展中国剩余定理可以很好地解决这个问题。

先令前 的 LCM 为 ,假设已经求出前 个方程的一个特解 ,那么其通解可以表示为 。现在就是要求出一个 i,使得 x+ip≡a_k \pmod {m_k},这个可以用扩展欧几里得来求解。那么新迭代下来的解为 x+ip,做 n 次扩展欧几里得就可以求出整个方程组的一组特解,求最小正整数解的方法与上面一样。

【模板】扩展中国剩余定理

组合数学

组合数公式

斯特林数(Stirling number)

表示最后是上谷歌找到如何打 斯特林数 的正确姿势

第一类斯特林数

n \brack m 表示 n 个不同元素分成 m 个圆排列的方案数。

有递推公式 {n \brack m}={n-1 \brack m}*(n-1)+{n-1 \brack m-1}

第二类斯特林数

{n \brace m} 表示 n 个不同元素分成 m 个集合的方案数。

有递推公式 {n \brace m}={n-1 \brace m}*m+{n-1 \brace m-1}

容斥原理

离散概率

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注