数论
欧几里得算法 筛法求素数(埃氏筛、欧拉筛) 裴蜀定理板子
欧几里得(辗转相除法)
求a,b的最大公因数
gcd(a,b) = gcd(b,a%b) = ….. 直到(a,b)中b为0,那么结果就为a
1 |
|
筛法求素数
埃氏筛
从2开始的 x ,划掉每个x的倍数,优化一下可以从x^2^开始划
1 |
|
欧拉筛
- 每个合数只被划掉一次,而且是被它的最小质因子划掉的 (原理是:每个合数都有一个<= sqrt(x) 的质因子 )
- 由于被它的最小质因子划掉的,因此还可以求每个数的最小质因子
- 筛的过程,为了避免重复筛
- 对于每个数x,乘上 <= x的最小质因子的质数,就可以保证不重复筛
1 |
|
裴蜀定理(扩展欧几里得算法)
(a,b) = d
裴蜀定理可以求出一组x,y 使得 d = ax0 + by0
并且只要求出满足的一组解x,y,就可以求出所有解
a’ = a/d b’ = b/d
x = x0 + kb’ y = y0 - ka’
运用
(a,b) = (b,a%b) =… = d
因此 b*y + (a % b) * x = d
即 by + (a - a/b * b ) * x = ax + (y-a/b * x ) * b = d
=> x’ = x y’ = y - a/b*x (b = 0 时停止)
1 |
|
数论
http://example.com/2023/04/03/数论/