1. 程式人生 > >基礎數論的一些名詞和定理 [未完]

基礎數論的一些名詞和定理 [未完]

mod 歐幾裏得算法 算法 str pre 個數 整除 soft 公約數

歐幾裏得算法

歐幾裏得算法用來快速求解兩個數的最大公約數。

整除性

\(a|b\)表示\(a\)整除\(b\),即\(b\)是\(a\)的倍數。

定理1:設\(a,b,c\)為整數,若\(a|b, a|c\),則\(a|(b+c)\)成立

證明: 設\(b = sa, c = ta(s,t為整數)\),則\(b+c = sa + ta = a(s+t)\),故\(a | (b+c)\)

最大公約數

\(gcd(a, b)\)表示\(a,b\)的最大公約數。

最暴力的求解最大公約數的方法是枚舉\(a,b\)的所有公約數,並取相同的最大的公約數。但很明顯太浪費時間了。

歐幾裏得是怎麽做的?

要求解\(gcd(a,b)\),通過不斷求解$ gcd(b, a \% b) $直到$ a \% b = 0 $時,取\(b\)作為答案。

代碼實現:

int gcd(int a, int b){
    return b==0?a:gcd(b,a%b);
}

註意為什麽不用判斷\(a\)和\(b\)的大小?因為當\(a < b\)時$ a \% b $ == \(a\)

$ S(n,k)= \sum\limits_{i=0}^kC_{n/p}^{i/p}*C_{n \%p}^{i \%p}\ mod\ p $

基礎數論的一些名詞和定理 [未完]