1. 程式人生 > >Chapter 1. 數學基礎 數論(一)

Chapter 1. 數學基礎 數論(一)

約數 歐幾裏得算法 int return 由於 數學基礎 mar align apt

Chapter 1. 數學基礎 數論(一)

Sylvia‘s I. 歐幾裏得算法.

歐幾裏德算法又稱輾轉相除法,用於計算兩個整數a,b的最大公約數(gcd).

內容:gcd(a,b) = gcd(b,a%b).

證明:設a=kb+r , 則r=a%b;

①設d為a,b的公約數,則有d|a , d|b;

且r=a-kb,故d|r;

所以d也是b , a%b的公約數。

② 設d 是b,a mod b的公約數,則 d|b , d|r ,
因a = kb +r;
所以d也是a , b的公約數

故a , b和b , a mod b的公約數是相同的,因此最大公約數也必然相同。

性質:

①gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)

②gcd(a/m ,b/m)=gcd(a,b)/m

③gcd(ma,mb)=m*gcd(a,b)

代碼:

int gcd(int a,int b){
   if (!b) return a;
   return (b,a%b);
}

Sylvia‘s Ⅱ.擴展歐幾裏德.

內容:給出 a 和 b,解方程 ax+by=gcd(a,b)

思想:

①求其中一解x,y

gcd(a,b)=gcd(b,a%b)

ax+by=gcd(a,b)

bx‘+(a%b)y‘=gcd(b,a%b)

ax+by=bx′+(a%b)y′ (a%b<=>a-[a/b]*b)

ax+by=bx′+(a??a/b??b)y′

ax+by=ay′+b(x′??a/b??y′)

故x=y′, y=x′??a/b??y′

邊界條件為 gcd(a,0)=a;

②對於其通解,設已求得的一組解為(x0,y0),其他解(x,y)

有ax0+by0=ax+by (都等於gcd(a,b))

變形得a(x0-x)=b(y-y0) 兩邊同除gcd(a,b)

設a‘=a/gcd(a,b),b‘=b/gcd(a,b)

則 a‘(x0-x)=b‘(y-y0) 此時a‘和b‘必然互質,因此(x0-x)是b‘的倍數,設(x0-x)=kb‘ 代入得 y=y0+a‘k

同理,(y-y0)是a‘的倍數,設(y-y0)=ka‘ 代入得 x=x0-b‘k

所以對於方程ax+by=gcd(a,b)的任意整數解可以寫成

x=x0-k*b/gcd(a,b)

y=y0+k*a/gcd(a,b) k取任意整數.

註:①推導過程並未用到“ax+by的右邊是什麽”

②如果gcd(a,b)=0,則意味著a或b等於0,可以特判

代碼:

int ex_gcd(int a,int b,int &x,int &y){
    if (b==0){
        x=1;
        y=0;
        return a;
    } 
    int ans=ex_gcd(b,a%b,x,y);
    int temp=x;
    x=y;
    y=temp-a/b*y;
    return ans;
}

Sylvia‘s Ⅲ. 模運算.

公式:①(a+b) % p=((a % p) + (b % p)) % p

②(a-b) % p = ((a % p) - (b % p)+p) % p

③(a*b) % p = (a % p) * (b % p) % p

註意:對於公式②,由於(a % p)可能小於(b % p),所以需要在結果上加上p.

對於公式③,需要註意(a % p) 和 (b % p) 相乘是否會溢出.

Sylvia‘s Ⅳ. 同余.

定義:兩個整數a,b,除以正整數m,若余數相同,則稱"a和b關於模m同余",記作a≡b(mod m),這叫作同余式.

說明:aΞb(mod m)<=>a=km+b(k取任意整數)<=>m|(a-b)

那麽對於方程ax≡b (mod m),可以理解為(ax-b)為m的倍數,設這個倍數為y,則ax-b=my,m為任意整數,所以可以寫成ax+my=b

該方程有整數解的充要條件是gcd(a,m)|b.

特殊情況:當b=1時,ax≡1 (mod m)的解稱為a關於模m的逆,而對於此方程有解必須滿足gcd(a,m)|1,那麽a和m必須互質(即gcd(a,m)=1),在此種情況下,方程有唯一解.

性質:

①反身性 a≡a (mod m).

②對稱性 若a≡b(mod m),則b≡a (mod m).

③傳遞性 若a≡b (mod m),b≡c (mod m),則a≡c (mod m).

④ 加法 若a≡b (mod m),c≡d(mod m),則a±c≡b±d (mod m)

特別地,若a≡b (mod m),則a±k≡b±k (mod m).

⑤乘法 若a≡b (mod m),c≡d(mod m),則ac≡bd (mod m) 特別地,若a≡b (mod m),則ak≡bk (mod m) 反復利用性質⑤,可得若a≡b (mod m),則ak≡bk (mod m). ⑥除法,若ac≡bc (mod m),則當gcd(c,m)=1時,a≡b (mod m) 當gcd(c,m)=d時,a≡b (mod m/d) 特別地,若ac≡bc (mod mc),則a≡b (mod m). ⑦若A≡a (mod m1),A≡a (mod m2),且gcd(m1,m2)=1,則A≡a (mod m1*m2). 利用此性質可以證明費馬小定理.


魚麗之宴

木心

”我曾見過生命

都只是行過

無所謂完成“


Sylvia

二零一七年五月六日

Chapter 1. 數學基礎 數論(一)