12/4學習總結

近幾天看了有關約數質數同餘歐幾里得擴展歐幾里得,感覺信息量有點大。

質數就是一個數的因子只有1和它本身。判斷質數的方法試除法1~sqrt(n)找因子就行,然後就是介紹了兩個打表的方法一個埃式篩法,質數的倍數都不是質數然後二重循環就一遍遍地排除。(這個之前學長講過這個方法素數打表也是一直用的這個方法)。另一個是線性篩,利用每個合數的最小質因子來保證每個數都被篩一次。質因數分解,分解的時候i從2開始一步步的把所有能整除n的i全部給他去了這樣保證每次只要i能整除n那麼這個i就肯定是質數因爲前面小的數都已經被除去了。

約數,n的約數就是能把n整除的數。求法i從1~sqrt(n)找n能整除i那麼n/i也能整除n。然後利用倍數打表思想類似埃式篩法。最大公約數最小公倍數,最大公約數輾轉相除法更相減損術

int gcd(int a,int b){
    return b?gcd(b,a%b):a;
}
gcd(a,b)=gcd(b,a-b)=gcd(a,a-b);
gcd(2a,2b)=2*gcd(a,b);
lcm(a,b)=a/gcd(a,b)*b;//這樣可以防止溢出

gcd(a,b)=1 a,b互質,歐拉函數φ(n)(1~n中與n互質的數的個數)證明用的容斥原理把它轉化成集合的∩就比較形象了兩個集合交在一起多加了一次減掉,三個集合兩兩交在一起兩兩交的多加一次剪掉在減的時候三個集合交叉處多減了再加上(emmm大致就是這個意思吧)

擴展歐幾里得的證明看着還能理解ax+by=gcd(a,b)這個式子一定有解 然後同構歐幾里得算法把式子化簡就得到另一個 bezot的方程而且係數之間的關係是固定的之後只需要遞歸的求解到邊界b=0的情況就可以了

歐拉定理和費馬小定理這塊的證明還有點迷糊用的話應該還是沒問題的吧(●'◡'●)。然後就是逆元用費馬小定理和擴展歐幾里得求 費馬小定理直接快速冪就行,擴展歐幾里得把b換成要MOD的數a和MOD是互質的gcd=1帶到擴展歐里得里正好是逆元得式子解x就行。

emmm板子也得要熟悉,嗯!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章