开数论坑了TAT
本文介绍整除、最小公倍数、最大公约数和扩展欧几里得算法等基础知识。
退役边缘人,近期整理下模板啦~
基本概念与性质
偶数、奇数
m o d : a = q b + r , 0 ≤ r < ∣ b ∣ ≠ 0 \mod: a=qb+r,0\leq r<|b|\neq 0 m o d : a = q b + r , 0 ≤ r < ∣ b ∣ = 0 ,记作r = a m o d b r=a\mod b r = a m o d b
a ∣ b , a ∣ c ⇒ ∀ x , y , a ∣ b x + c y a|b,a|c\Rightarrow \forall x,y,a|bx+cy a ∣ b , a ∣ c ⇒ ∀ x , y , a ∣ b x + c y ,a a a 称公因子,最大的记作gcd ( a , b ) \gcd(a,b) g cd( a , b ) (对应有最小公倍数l c m ( a , b ) lcm(a,b) l c m ( a , b ) )。
a ∣ b , b ∣ c ⇒ a ∣ c a|b,b|c\Rightarrow a|c a ∣ b , b ∣ c ⇒ a ∣ c
m ≠ 0 , a ∣ b ⇔ m a ∣ m b m\neq 0,a|b\Leftrightarrow ma|mb m = 0 , a ∣ b ⇔ m a ∣ m b
a ∣ b , b ∣ a ⇒ a = ± b a|b,b|a\Rightarrow a=\pm b a ∣ b , b ∣ a ⇒ a = ± b
a ∣ b , b ≠ 0 ⇒ ∣ a ∣ ≤ ∣ b ∣ a|b,b\neq 0\Rightarrow |a|\leq |b| a ∣ b , b = 0 ⇒ ∣ a ∣ ≤ ∣ b ∣
a ∣ m , b ∣ m ⇒ l c m ( a , b ) ∣ m ; d ∣ a , d ∣ b ⇒ d ∣ gcd ( a , b ) a|m,b|m\Rightarrow lcm(a,b)|m;d|a,d|b\Rightarrow d|\gcd(a,b) a ∣ m , b ∣ m ⇒ l c m ( a , b ) ∣ m ; d ∣ a , d ∣ b ⇒ d ∣ g cd( a , b )
a b = gcd ( a , b ) × lcm ( a , b ) ab=\gcd(a,b)\times \text{lcm}(a,b) a b = g cd( a , b ) × lcm ( a , b )
m , a , b ∈ N + , lcm ( m a , m b ) = m × gcd ( a , b ) m,a,b\in N^+,\text{lcm}(ma,mb)=m\times \gcd(a,b) m , a , b ∈ N + , lcm ( m a , m b ) = m × g cd( a , b )
辗转相除法(欧几里得算法)
a = q b + r , 0 ≤ r < ∣ b ∣ ≠ 0 , gcd ( a , b ) = gcd ( b , r ) a=qb+r,0\leq r<|b|\neq 0,\gcd(a,b)=\gcd(b,r) a = q b + r , 0 ≤ r < ∣ b ∣ = 0 , g cd( a , b ) = g cd( b , r )
1 ll gcd (ll a, ll b) { return b == 0 ? a : gcd (b, a % b); }
扩展欧几里得 :
gcd ( a , b ) = x a + y b \gcd(a,b)=xa+yb g cd( a , b ) = x a + y b ,求解x , y x,y x , y 。
推论:gcd ( a , b ) = 1 ⇔ a , b 互素 ⇔ 存在 x a + b y = 1 \gcd(a,b)=1\Leftrightarrow a,b互素\Leftrightarrow 存在xa+by=1 g cd( a , b ) = 1 ⇔ a , b 互 素 ⇔ 存 在 x a + b y = 1
算法计算次数:拉梅定理(咕咕咕)
1 2 3 4 5 6 7 8 9 10 11 void exgcd (ll a, ll b, ll &d, ll &x, ll &y) { if (!b) { x = 1 , y = 0 , d = a; return ; } exgcd (b, a % b, d, y, x); y -= a / b * x; }