数论入门篇

欧几里得定理

g c d ( a , b ) = g c d ( a % b , b ) gcd(a,b)=gcd(a\%b,b) gcd(a,b)=gcd(a%b,b)(a>=b)
给出简单证明:
可以知道 g c d ( a , b ) < = b 且 为 b 的 因 子 gcd(a,b)<=b且为b的因子 gcd(a,b)<=bb
a = m b + r a=mb+r a=mb+r容易得到左边的mb部分一定可以被b的所有因子整除,所以不会对结果造成影响,所以得证对于a>=b, g c d ( a , b ) = g c d ( a % b , b ) gcd(a,b)=gcd(a\%b,b) gcd(a,b)=gcd(a%b,b)
递归求解,当b=0时返回a即可。

拓展性质:对于a>=b, g c d ( a , b ) = g c d ( a − b , b ) \\gcd(a,b)=gcd(a-b,b) gcd(a,b)=gcd(ab,b)= g c d ( a + b , b ) gcd(a+b,b) gcd(a+b,b)
g c d ( a + k ∗ b , b ) = g c d ( a , b ) gcd(a+k*b,b)=gcd(a,b) gcd(a+kb,b)=gcd(a,b),k为整数

裴蜀定理(贝祖定理)

a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)
对于 a a a, b b b g c d ( a , b ) gcd(a,b) gcd(a,b),一定存在系数x和y,使得:
a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)

拓展欧几里得定理

对贝祖定理系数的求解过程称为拓展欧几里得定理

ll exgcd(ll a,ll b,ll &x,ll &y)
{
    if(b==0)
    {
        x=1;
        y=0;
        return a;
    }
    else {
        ll g=exgcd( b, a % b, y, x);
        y -= a / b * x;
        return g;
    }
}

证明:
a x 1 + b y 1 = g c d ( a , b ) ax_1+by_1=gcd(a,b) ax1+by1=gcd(a,b)
b x 2 + ( a % b ) y 2 = g c d ( a , b ) bx_2+(a\%b)y_2=gcd(a,b) bx2+(a%b)y2=gcd(a,b)
联立两个等式可得:
a ⋅ x 1 + b ⋅ y 1 \quad a\cdot x_1+b\cdot y_1 ax1+by1
= b ⋅ x 2 + ( a % b ) y 2 =b\cdot x_2+(a\%b)y_2 =bx2+(a%b)y2
= b ⋅ x 2 + ( a − a / b ⋅ b ) y 2 =b\cdot x_2+(a-a/b\cdot b)y_2 =bx2+(aa/bb)y2
= a ⋅ y 2 + b ⋅ ( x 2 − a / b ⋅ y 2 ) =a\cdot y_2+b\cdot (x_2-a/b\cdot y_2) =ay2+b(x2a/by2)
可以得到:
x 1 = y 2 x_1=y_2 x1=y2
y 1 = x 2 − a / b ⋅ y 2 y_1=x_2-a/b\cdot y_2 y1=x2a/by2

定理的一些基本应用
1.求 x x x p p p的逆元
2.关于系数的变化
对于 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b)
两边同除以 g c d ( a , b ) gcd(a,b) gcd(a,b),
则a与b变成了素数p和q,
p x + q y = 1 px+qy=1 px+qy=1
系数x,y可以随意变动,
x x x每增大 q q q, y y y就减少 p p p,反之亦然。

算数基本定理:

一个数可被唯一地表示成若干个素数的乘积。
x = p 1 c n t 1 ∗ p 2 c n t 2 ∗ p 3 c n t 3 ∗ ⋯ ∗ p n c n t n x=p^{cnt_1}_1*p^{cnt_2}_2*p^{cnt_3}_3*\cdots*p^{cnt_n}_n x=p1cnt1p2cnt2p3cnt3pncntn
c n t i cnt_i cnti表示x分解后的乘积表达式中有 c n t i cnt_i cnti p i p_i pi.
定理的一些基本应用
1.求出x的因子个数
f a c t o r C n t = ( c n t 1 + 1 ) ∗ ( c n t 2 + 1 ) ∗ ⋯ ∗ ( c n t n + 1 ) factorCnt=(cnt_1+1)*(cnt_2+1)*\cdots*(cnt_n+1) factorCnt=(cnt1+1)(cnt2+1)(cntn+1)
2.更好地理解 g c d ( 最 大 公 因 数 ) gcd(最大公因数) gcd()
g c d ( a , b ) = p 1 m i n ( c n t a 1 , c n t b 1 ) ∗ p 2 m i n ( c n t a 2 , c n t b 2 ) ∗ ⋯ ∗ p n m i n ( c n t a n , c n t b n ) gcd(a,b)=p_1^{min(cnta_1,cntb_1)}*p_2^{min(cnta_2,cntb_2)}*\cdots*p_n^{min(cnta_n,cntb_n)} gcd(a,b)=p1min(cnta1,cntb1)p2min(cnta2,cntb2)pnmin(cntan,cntbn)
3.更好地理解 l c m ( 最 小 公 倍 数 ) lcm(最小公倍数) lcm()
l c m ( a , b ) = p 1 m a x ( c n t a 1 , c n t b 1 ) ∗ p 2 m a x ( c n t a 2 , c n t b 2 ) ∗ ⋯ ∗ p n m a x ( c n t a n , c n t b n ) lcm(a,b)=p_1^{max(cnta_1,cntb_1)}*p_2^{max(cnta_2,cntb_2)}*\cdots*p_n^{max(cnta_n,cntb_n)} lcm(a,b)=p1max(cnta1,cntb1)p2max(cnta2,cntb2)pnmax(cntan,cntbn)

费马小定理

如果p是一个质数,而整数a不是p的倍数,那么 1. \\1. 1. a p m o d p = a^p\quad mod\quad p= apmodp= a m o d p a\quad mod\quad p amodp.
2. \\2. 2. a p − 1 m o d p a^{p-1}\quad mod\quad p ap1modp = 1 m o d p =1\quad mod\quad p =1modp.
应用:
1.求一个数x模p的逆元y
y = x p − 2 y=x^{p-2} y=xp2
证明:
x ∗ y = x ∗ x p − 2 = x p − 1 m o d p = 1 ( 此 处 由 费 马 小 定 理 得 出 ) \quad x*y\\=x*x^{p-2}\\=x^{p-1}mod p\\=1(此处由费马小定理得出) xy=xxp2=xp1modp=1()
因为取模运算后的结果已经不能简单地用除法,所以我们引入了乘法逆元的概念,即你如果在模p条件下想除以一个数,只能用乘以它的逆元代替。
证明可以看下文的完全剩余系

互质的判断

g c d ( x , y ) = 1 , 表 明 x , y 互 质 gcd(x,y)=1,表明x,y互质 gcd(x,y)=1x,y
拓展性质:
x 和 y 互 质 , x和y互质, xy
1. g c d ( x + y , x ∗ y ) = 1 gcd(x+y,x*y)=1 gcd(x+y,xy)=1
证明:x和y互质表明它们没有共同的质因子,另 z = x ∗ y z=x*y z=xy,显然z具有x,y所有的质因子。
x + y x+y x+y要存在至少一个x或y的因子的条件是: x + y x+y x+y能够整除这些质因子,但因为 x + y x+y x+y合并时,x和y没有一个共同的质因数,所以相加后这些质数并未能保留,全部变成了别的质因数。所以, g c d ( x + y , x ∗ y ) = 1 gcd(x+y,x*y)=1 gcd(x+y,xy)=1.

欧拉函数

定义:对于正整数n,欧拉函数φ(n)是小于n的正整数中与n互质的数的数目.
1.对于素数p, φ ( p ) = p − 1 φ(p)=p-1 φ(p)=p1
2.对于素数p, φ ( p k ) = p k − p k − 1 φ(p^k)=p^k-p^{k-1} φ(pk)=pkpk1
3.若 p 1 p_1 p1 p 2 p_2 p2互质, 那么 φ ( p 1 p 2 ) = φ ( p 1 ) φ ( p 2 ) φ(p_1p_2)=φ(p_1)φ(p_2) φ(p1p2)=φ(p1)φ(p2)
证明:如果a与p1互质(a φ ( p 1 ) φ ( p 2 ) φ(p1)φ(p2) φ(p1)φ(p2)种可能,而c的值有 φ ( p 1 p 2 ) φ(p1p2) φ(p1p2)种可能,所以 φ ( p 1 p 2 ) φ(p1p2) φ(p1p2)就等于 φ ( p 1 ) φ ( p 2 ) φ(p1)φ(p2) φ(p1)φ(p2)
4.对于一个有多个质因子的数x,
x ( x = p 1 k 1 p 2 k 2 ⋯ p n k n ) x(x=p_1^{k_1}p_2^{k_2}\cdots p_n^{k_n}) x(x=p1k1p2k2pnkn),
由第三个性质可得:
φ ( x ) = φ ( p 1 k 1 ) φ ( p 2 k 2 ) ⋯ φ ( p n k n ) φ(x)=φ(p_1^{k_1})φ(p_2^{k_2})\cdots φ(p_n^{k_n}) φ(x)=φ(p1k1)φ(p2k2)φ(pnkn)
由第四个性质可得(n为x不同质因数的个数):
φ ( p 1 k 1 ) φ ( p 2 k 2 ) ⋯ φ ( p n k n ) \quadφ(p_1^{k_1})φ(p_2^{k_2})\cdots φ(p_n^{k_n}) φ(p1k1)φ(p2k2)φ(pnkn) = p 1 k 1 ( 1 − 1 p 1 ) p 2 k 2 ( 1 − 1 p 2 ) ⋯ p n k n ( 1 − 1 p n ) = p 1 k 1 p 2 k 2 ⋯ p n k n ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) ⋯ ( 1 − 1 p n ) = x ( 1 − 1 p 1 ) ( 1 − 1 p 2 ) ⋯ ( 1 − 1 p n ) = x ∏ i = 1 n ( 1 − 1 p i ) \\=p_1^{k_1}(1-\frac{1}{p_{1}})p_2^{k_2}(1-\frac{1}{p_{2}}) \cdots p_n^{k_n}(1-\frac{1}{p_{n}})\\=p_1^{k_1}p_2^{k2}\cdots p_n^{k_n}(1-\frac{1}{p_{1}})(1-\frac{1}{p_{2}})\cdots(1-\frac{1}{p_{n}})\\=x(1-\frac{1}{p_{1}})(1-\frac{1}{p_{2}})\cdots(1-\frac{1}{p_{n}})\\=x\prod_{i=1}^n (1-\frac{1}{p_i}) =p1k1(1p11)p2k2(1p21)pnkn(1pn1)=p1k1p2k2pnkn(1p11)(1p21)(1pn1)=x(1p11)(1p21)(1pn1)=xi=1n(1pi1)

同余关系

加 法 加法
1.如果 a ≡ b 且 c ≡ d a\equiv b 且c \equiv d abcd,那么 a + c ≡ b + d ( m o d m ) a+c \equiv b+d(mod m) a+cb+d(modm)
减 法 减法
2.如果 a ≡ b 且 c ≡ d a\equiv b 且c \equiv d abcd,那么 a − c ≡ b − d ( m o d m ) a-c \equiv b-d(mod m) acbd(modm)
乘 法 乘法
3.如果 a ≡ b 且 c ≡ d a\equiv b 且c \equiv d abcd,那么 a c ≡ b d ( m o d m ) ac \equiv bd(mod m) acbd(modm)
4…如果 a ≡ b 且 c ≡ d a\equiv b 且c \equiv d abcd,那么 a n ≡ b n ( m o d m ) a^n \equiv b^{n}(mod m) anbn(modm)
除 法 除法
只有在满足d与m互质的情况下
a d ≡ b d ( m o d m ) ad \equiv bd(mod m) adbd(modm)等价于 a ≡ b ( m o d m ) a \equiv b(mod m) ab(modm), d ≠ 0 d\ne 0 d=0
证明:
寻找系数 d ′ 和 m ′ d'和m' dm,使得 d d ′ + m ′ m = 1 ( d 和 m 互 质 , g c d ( d , m ) = 1 ) dd'+m'm=1(d和m互质,gcd(d,m)=1) dd+mm=1(dm,gcd(d,m)=1),
那么 a d ≡ b d    ⟺    a d d ′ ≡ b d d ′ ad \equiv bd \iff add' \equiv bdd' adbdaddbdd
因为 d d ′ = 1 − m m ′ dd'=1-mm' dd=1mm
所以 a ≡ b a \equiv b ab

模数变化

a d ≡ b d ( m o d m d ) ad \equiv bd(mod md) adbd(modmd)等价于 a ≡ b ( m o d m ) a \equiv b(mod m) ab(modm)
a d ≡ b d ( m o d m ) ad \equiv bd(mod m) adbd(modm)等价于 a ≡ b ( m o d m g c d ( d , m ) ) a \equiv b(mod \frac{m}{gcd(d,m)}) ab(modgcd(d,m)m)
证明: d d ′ + m m ′ = g c d ( d , m ) dd'+mm'=gcd(d,m) dd+mm=gcd(d,m),
这就给出同余式
a ∗ g c d ( d , m ) ≡ b ∗ g c d ( d , m ) ( m o d m ) \quad a*gcd(d,m)\equiv b*gcd(d,m)(modm) agcd(d,m)bgcd(d,m)(modm)
→ a ≡ b ( m o d m g c d ( d , m ) ) \rightarrow a \equiv b(mod \frac{m}{gcd(d,m)}) ab(modgcd(d,m)m)

a ≡ b ( m o d m d ) a \equiv b(mod md) ab(modmd)等价于 a ≡ b ( m o d m ) a \equiv b(mod m) ab(modm), d 为 整 数 d为整数 d

如果 m ⊥ n ( 互 质 ) m\perp n(互质) mn(),
a ≡ b ( m o d m n ) a \equiv b(mod mn) ab(modmn)    ⟺    a ≡ b ( m o d m ) 并 且 a ≡ b ( m o d n ) \iff a \equiv b(mod m)并且a \equiv b(mod n) ab(modm)ab(modn)

中国剩余定理

找到一个满足以下条件并最小的 X X X
对于任意i都满足, X m o d m i Xmodm_i Xmodmi= a i a_i ai ( 1 < = i < = n ) (1<=i<=n) (1<=i<=n)
要求 m i m_i mi之间互质
首先考虑一个周期性,即找到一个可行解,该如何处理使得解更小呢?不断减去周期T即可。
T = ∏ i = 1 n m i T=\prod_{i=1}^{n}{m_i} T=i=1nmi
对于X,我们不妨考虑找到一个组合使得X= ∑ x i \sum{x_i} xi
x i x_i xi满足条件 x i % m i xi\%m_i xi%mi= a i 并 且 ( T / m i ) ∣ x i a_i 并且(T/m_i)|x_i ai(T/mi)xi,则这个 x i x_i xi不会对其他 x x x造成影响。
怎么找到这个 x i x_i xi呢?
1.求出 T / m i T/m_i T/mi m i m_i mi下的逆元 p p p
2.令 x i x_i xi= T / m i T/m_i T/mi*p,则乘积模 m i m_i mi为1
3.再把 x i x_i xi乘以 a i a_i ai即可
思考:为什么要求 m i m_i mi之间互质呢?
如果 m i m_i mi之间不互质,那么周期T就不为这个。
思考:那么如果 m i m_i mi之间不互质该怎么办呢?
把非互质的方程组消去,合并成一个。
用拓展欧几里得消去其他m非互质的方程,合并后的 m o d mod mod l c m ( m i , m j ) lcm(m_i,m_j) lcm(mi,mj)

大佬博客

欧拉定理

g c d ( a , m ) = 1 , 则 a φ ( m ) ≡ 1 ( m o d m ) gcd(a,m)=1,则a^{φ(m)}\equiv1(mod m) gcd(a,m)=1,aφ(m)1(modm)
数论入门篇_第1张图片

拓展欧拉定理(欧拉降幂公式)

数论入门篇_第2张图片
若 g c d ( a , p ) = 1 , 那 么 a b = a b m o d φ ( p ) 若gcd(a,p)=1,那么a^b=a^{bmodφ(p)} gcd(a,p)=1,ab=abmodφ(p)
否 则 , 若 b > = φ ( p ) , a b = a b m o d φ ( p ) + φ ( p ) 否则, 若b>=φ(p),a^b=a^{bmodφ(p)+φ(p)} ,b>=φ(p),ab=abmodφ(p)+φ(p)
若 b < φ ( p ) , a b = a b 若b<φ(p),a^b=a^b b<φ(p),ab=ab

乘法逆元的几种求法

限制条件
1.拓展欧几里得(要求a与m互质)
2.费马小定理(要求a与p互质,并且p为质数)

一些数学术语(摘自百度百科)

剩余类
设模为n,则根据余数可将所有的整数分为n类,把所有与整数a模n同余的整数构成的集合叫做模n的一个剩余类,记作[a]。并把a叫作剩余类[a]的一个代表元。

完全剩余系
在模n的剩余类中各取一个元素,则这n个数就构成了模n的一个完全剩余系。
简化剩余系
简化剩余系(reduced residue system)也称既约剩余系或缩系,是m的完全剩余系中与m互素的数构成的子集,如果模m的一个剩余类里所有数都与m互素,就把它叫做与模m互素的剩余类。
在与模m互素的全体剩余类中,从每一个类中各任取一个数作为代表组成的集合,叫做模m的一个简化剩余系。
例如:
模5的一个简化剩余系是1,2,3,4,模10的一个简化剩余系是1,3,7,9,模18的一个简化剩余系是1,5,7,11,13,17

一些引理
1.若a,b,c为任意三个整数,m为正整数,且 ( m , c ) = 1 (m,c)=1 (m,c)=1,则当 a c ≡ b c ( m o d m ) ac\equiv bc(modm) acbc(modm)时,有
a ≡ b ( m o d m ) a\equiv b(mod m) ab(modm)

证明:
上式等价于:
c ( a − b ) ≡ 0 ( m o d m ) \quad c(a-b)\equiv 0(modm) c(ab)0(modm)
∵ ( m , c ) = 1 ∵(m,c)=1 (m,c)=1
∴ a − b ≡ 0 ( m o d m ) ∴a-b\equiv 0(modm) ab0(modm)
∴ a ≡ b ( m o d m ) ∴a\equiv b(modm) ab(modm)
2.设 m m m是一个整数且 m > 1 m>1 m>1 b b b是一个整数且 ( m , b ) = 1 (m,b)=1 (m,b)=1
如果 a [ 1 ] , a [ 2 ] , a [ 3 ] , a [ 4 ] , … a [ m ] a[1],a[2],a[3],a[4],…a[m] a[1],a[2],a[3],a[4],a[m]是模m的一个完全剩余系,
b ⋅ a [ 1 ] , b ⋅ a [ 2 ] , b ⋅ a [ 3 ] , b ⋅ a [ 4 ] , … b ⋅ a [ m ] b·a[1],b·a[2],b·a[3],b·a[4],…b·a[m] ba[1],ba[2],ba[3],ba[4],ba[m]也构成模m的一个完全剩余系。

证明采用反证法:
如若存在 b ⋅ a [ i ] ≡ b ⋅ a [ j ] b·a[i] \equiv b·a[j] ba[i]ba[j],那么 b ( a [ i ] − a [ j ] ) ≡ 0 ( m o d m ) b(a[i]-a[j])\equiv0(modm) b(a[i]a[j])0(modm)
又 因 为 ( b , m ) = 1 又因为(b,m)=1 (b,m)=1,则 a [ i ] ≡ a [ j ] ( m o d m ) a[i]\equiv a[j](mod m) a[i]a[j](modm),与条件矛盾。
作用
证明费马小定理:如果 ( a , p ) = 1 (a,p)=1 (a,p)=1( p p p为素数),则 a p − 1 = 1 a^{p-1}=1 ap1=1

过程:构造素数p的完全剩余系
P = { 1 , 2 , 3 , … , p − 1 } P=\{1,2,3,\dots,p-1\} P={1,2,3,,p1}
( a , p ) = 1 (a,p)=1 (a,p)=1,那么根据引理2,
Q = { a , 2 a , 3 a , … , ( p − 1 ) a } Q=\{a,2a,3a,\dots,(p-1)a\} Q={a,2a,3a,,(p1)a}也为p的完全剩余系
根据完全剩余系的性质:
1 ∗ 2 ∗ 3 ∗ ⋯ ∗ ( p − 1 ) ≡ a ⋅ 2 a ⋅ 3 a ⋅ … ⋅ ( p − 1 ) a ( m o d p ) \quad1*2*3*\dots*(p-1)\equiv a·2a·3a·\dots·(p-1)a(mod p) 123(p1)a2a3a(p1)a(modp)
( p − 1 ) ! ≡ ( p − 1 ) ! ⋅ a p − 1 ( m o d p ) \quad(p-1)!\equiv(p-1)!·a^{p-1}(modp) (p1)!(p1)!ap1(modp)
消去 ( p − 1 ) ! (p-1)! (p1)!,得到 a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv1(modp) ap11(modp)

卢卡斯定理

Lucas定理是用来求 c ( n , m ) m o d p c(n,m) mod p c(n,m)modp
C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p

ll lucas(ll n,ll m,ll mod)
{
    if(!m)return 1;
    return C(n%mod,m%mod,mod)*lucas(n/mod,m/mod,mod)%mod;
}

你可能感兴趣的:(知识归纳)