數論學習總結
1.整數分解定理,即:d=p1^r1*p2^r2...pk^rk (pi為素數)
2.同餘:
若a mod c==b mod c,記作 a b (mod c).
性質:
(1).a+d ≡ b+d (mod c)
(2).a*d ≡ b*d (mod c)
(3).a/d ≡ b/d (mod c) (d|a&&d|b&&gcd(d,c)==1)
(4).a^n ≡ b^n (mod c)
3.歐幾里得演算法:
gcd(a,b)=gcd(b,a mod b).
證:
gcd(a,b)=gcd(b,a-b),因為若a,b有最大公約數d,則a=k1*d,b=d2*d,則a-b=(k1-k2)*d也為d的倍數。
而 mod 相當於做多次減法。
引理:gcd(a,b)*lcm(a,b)=a*b;
證:
由整數分解定理得:若a=p1^r1*p2^r2...pk^rk,b=p1^m1*p2^m2...pk^mk;
則gcd(a,b)=p1^min(r1,m1)*p2^min(r2,m2)...pk^min(rk,mk)
lcm(a,b)=p1^max(r1,m1)*p2^max(r2,m2)...pk^max(rk,mk)
另一種gcd:
若a為偶數,b為偶數,則gcd(a,b)=2*gcd(a/2,b/2)
若a為奇數,b為奇數,則gcd(a,b)=gcd(b,a-b)
若a為奇數,b為偶數,則gcd(a,b)=gcd(a,b/2)
若a為偶數,b為奇數,則gcd(a,b)=gcd(a/2,b)
4.擴充套件歐幾里得
背景:用於求形如 ax+by=c 的不定方程的解
證:
首先可以證明c一定為k*gcd(a,b),否則無解。
下面說明如何在gcd中求出x,y
x1*a+y1*b=gcd(a,b)
x2*b+y2*(a%b)=gcd(a,b)
可得:x1*a+y1*b=x2*b+y2*(a%b)
整理可得:x1*a+y1*b=y2*a+(x2-y2*a/b)*b
於是x1=y2,y1=x2-y2*(a/b)
程式碼:
void exgcd(long long a,long long b,long long &x,long long &y,long long &d)
{
if(b==0) {
x=1;y=0;d=a;
return;
}
exgcd(b,a%b,y,x,d);
y-=x*(a/b);
return;
}
用途:
(1).求解不定方程
(2).模線性方程組
形如:
x mod k1=r1
x mod k2=r2
...
x mod km=rm
我們的想法是:將 x mod ki=ri 轉換成x=p*ki+ri,將 x mod kj=rj轉換成x=q*kj+rj
整理得:p*ki+ri=q*kj+rj
可得:p*ki-q*kj=rj-ri
接下來用擴充套件歐幾里得求出一組p,q,代入可得x,設為x0
此時x0為這兩個方程的通解,然後就可以將兩方程合併,得 x mod lcm(ki,kj)=x0
如此迴圈可得最終解
(3).求逆元
定義:若(a*b) mod p=1,則稱a,b互為關於p的逆元
用途:(a/b) mod p=(a*k) mod p (k為b的逆元)
證:http://blog.sina.com.cn/s/blog_7c4c33190100s48a.html
相關文章
- 【論文學習】FastText總結AST
- 數論總結——更新ing
- 數學與程式設計:“機率論”總結程式設計
- JAVA基礎學習-數字與字串學習總結Java字串
- 學習總結
- 機器學習數學知識積累總結機器學習
- ICLR 2020 多智慧體強化學習論文總結ICLR智慧體強化學習
- 並行多工學習論文閱讀(五):論文閱讀總結並行
- 數論分塊學習
- ConstraintLayout 學習總結AI
- BOM學習總結
- tkinter學習總結
- vue學習總結Vue
- HSF學習總結
- ElasticSearch 學習總結Elasticsearch
- Storm學習總結ORM
- vue 學習總結Vue
- lua 學習總結
- Angularjs 學習總結AngularJS
- WebRTC學習總結Web
- GCD 學習總結GC
- CompletableFuture學習總結
- awk 學習總結
- MyBatis 學習總結MyBatis
- Maven學習總結Maven
- Ajax學習總結
- JVM學習總結JVM
- mysqlimport學習總結MySqlImport
- WorkFlow學習總結
- JNI 學習總結
- SVG學習總結SVG
- HTML學習總結HTML
- Mybatis學習總結MyBatis
- JavaWeb學習總結JavaWeb
- KUDU學習總結
- pandas 學習總結
- fetch學習總結
- MYSQL學習總結MySql
- 近期學習總結