數論讀書筆記——算數基本定理
歐幾里得:
歐幾里得演算法:
定理1:整數a≥b>0,令r0=a,r1=b如果我們做帶餘除法得到rj=r(j+1)q(j+1)+r(j+2),且0<r(j+2)<r(j+1),j=0,1,2,…,n-2且r(n+1)=0,那麼(a,b)=rn,即最後一個非零餘數
從定理中我們看到通過帶餘除法,在每一步中被除數和除數被更小的數代替,這些更小的數實際上是每一步中的除數和餘數麼運算直到餘數為0時終止。這一系列的運算產生了一系列的等式,而最大公因子就是最後一個非零的餘數
引理1:如果e和d是整數且e=dq+r,其中q,r是整數麼那麼(e,d)=(d,r)
所以得到gcd的模板
LL gcd(LL a,LL b)
{
If(b==0)return a;
Return gcd(b,a%b);
}
歐幾里得演算法是一種快速地求最大公因子的方法
接下來,當我們估算用歐幾里得演算法求兩個整數的最大公因子時用到除法的最大步數時會看到這一點。但是,我們首先要證明的,對於一個給定的正整數n,存在整數a,b使得用歐幾里得方法求(a,b)恰好需要n步除法。我們可以通過斐波那契序列中連續的項來求這樣的整數。
用歐幾里得演算法求斐波那契序列中連續項的最大公因子的速度很慢,因為除了最後一步,其餘的每一步的商都是1,例如(34,55)需用8次除法,且互質。
下面定理告訴我們用歐幾里得演算法求斐波那契序列中連續兩項的最大公因子需要多少步除法.
定理2:令f(n+1)和f(n+2)(n>1)是斐波那契序列中連續兩項。那麼用歐幾里得演算法證明(f(n+1),f(n+2))一共需要n步。
歐幾里得演算法的計算複雜度:拉梅定理:用歐幾里得演算法計算兩個正整數的最大公因子時,所需的除法次數不會超過整數中較小的那個十進位制數的位數的5倍。(定理3)
推論:求兩個正整數a,b。a>b的最大公因子需要O((log2a)^3)(log以2為底a的對數的立方)次的運算。
用線性組合的方法來表示最大公因子:
歐幾里得演算法可以得到用兩個整數的線性組合來表示他們的最大公因子。
一般地嗎,為了知曉如何使用a,b的線性組合來表示他們的最大公因子d=(a,b),我們就要涉及歐幾里得演算法中產生的一系列的等式。由倒數第二個等式我們有:
rn=(a,b)=r(n-2)-r(n-1)*q(n-1)
這就用r(n-2)和r(n-1)的線性組合表示了(a,b)。那麼倒數第三部就將r(n-1)用r(n-3)-r(n-2)q(n-2)來表示。即
r(n-1)=r(n-3)-r(n-2)*q(n-2),
用這個等式來小區上面的表示式中的r(n-1),那麼
(a,b)=r(n-2)-(r(n-3)-r(n-2)*q(n-2))*q(n-1)
=(1+q(n-1)*q(n-2))r(n-2)-q(n-1)*r(n-3)
這就將(a,b)表示成了r(n-2),r(n-3)的線性組合。我們繼續沿著歐幾里得演算法相反的步驟將(a,b)表示成接下來的餘數的線性組合,直到我們求的(a,b)表示成r0=a,r1=b的線性組合。對於特定的j,如果我們已經求的
(a,b)=s*rj+t*r(j-1)
那麼,因為
rj=r(j-2)-r(j-1)*q(j-1)
我們有
(a,b)=s(r(j-2)-r(j-1)q(j-1))+tr(j-1)
=(t-sq(j-1))r(j-1)+sr(j-2)
這顯示瞭如何沿著歐幾里得演算法產生的等式遞進,最終使得a和b的最大公因子(a,b)可以表示成他們的線性組合。
這種將(a,b)表示成a,b線性組合的方法在計算上很不方便,因為它必須給出歐幾里得演算法的步驟,並且儲存這些步驟,然後沿著歐幾里得演算法相反的步驟將(a,b)表示成一對相鄰的餘數的線性表示。有另一種計算(a,b)方法,只需要用一次歐幾里得演算法。
這個方法就是擴充套件歐幾里得演算法。
定理4:令a,b是正整數,那麼
(a,b)=Sn*a+Tn*b
其中Sn,Tn是下面定義的遞迴序列的第n項
S0=1,T0=0,
S1=0,T1=1
且 Sj=S(j-2)-Q(j-1)S(j-1) Tj=T(j-2)-Q(j-1)T(j-1)
其中j=2,3,…,n,qj是歐幾里得演算法中每一步的商
線性丟番圖方程:解不定方程
背景:當我們需要求解特定方程的整數解的時候,那麼就得到了一個丟番圖方程,這些方程是根據丟番圖(diophantus)命名的。他寫下了一些方程並將解限定在有理數域上。方程ax+by=c上的格點。第一個解是由婆羅摩笈多(brahmagupta)給出的
定理1:設a,b是整數且d=(a,b)。如果c不能被d整除那麼方程ax+by=c沒有整數解。如果c能被d整除那麼存在無窮多個整數解,另外,如果x=x0,y=y0是方程的一個特解,那麼所有的解可以表示為:
X=x0+(b/d)*n
Y=y0-(a/d)*n
其中n是整數
定理2:如果a1,a2,…,an是正整數,那麼方程a1x1+a2x2+…+anxn=c有整數解當且僅當d=(a1,a2,……,an)能整除c,另外當存在一個解的時候,那麼方程有無窮多個解
解n元一次不定方程a1x1+a2x2+…+anxn=c(a1,a2,…,an∈N)時,可先順次求出(a1,a2)=d2,(d2,a3)=d3,……,(d(n-1),an)=dn.若c能被dn整除,則方程有解,作方程:
A1x1+a2x2=d2t2
D2t2+a3x3=d3t3
……
D(n-1)t(n-1)+anxn=c
求出最後一個方程的所有解,然後把tn-1的每一個值代入倒數第二個方程,求出它的所有解,依次類推,即可得所有解。
M個n元一次不定方程組成的方程組,其中m<n,可以消去m-1個未知數,從而消去m-1個不定方程,將方程組轉化為1個n-m+1元的一次不定方程。
算數基本定理
定理1(算術基本定理):每個大於1的正整數都可以被唯一地寫成素數的乘積,在乘積中的素因子按照非降序排列。有時算術基本定理被擴充套件應用到整數1,即1被看作是唯一地被寫成素數的空乘積。
引理1:如果a,b和c是正整數,滿足(a,b)=1 且a|bc 則a|c
引理2:如果p整除a1*a2*...*an,其中p為素數,且a1,a2,…,an是正整數,則存在整數i,1≤i≤n,使得p整除ai
唯一因子分解在哪裡不成立:每個正整數有唯一的素分解這個事實是整數集合與其他一些集合共有的一個特殊性質,但在丟番圖方程x^n+y^n=z^n。他們可以用某一特別型別的代數數的唯一分解形式證明,當n為整數且n≥3時,這個方程沒有非零整數解(費馬最後定理的結果)。但是這些數並不具有唯一分解的性質,因此假設的證明是不正確的。
素因子分解的應用:
一個正整數n的素冪分解包含了關於n的本質資訊。給定這一分解,我們立即可以得到一個素數p是否能夠整除n,因為p整除n當且僅當它出現在這個分解中。一個素數p能整除n的最高次冪是這個素數在n的素冪分解中的冪次。而且,一個整數d整除n當且僅當d的素冪分解中出現的所有素數都在n的素冪分解中出現的所有素數都在n的素冪分解中出現,且其出現的冪次至少要與在d的素冪分解中的冪次一樣大
我們可以應用素分解的另一個途徑是求最大公因子
為了一般地描述如何用素分解來求最大公因子,設min(a,b)為兩個數a和b中較小的,或者說最小值。現在設a和b的素分解為
a=p1^a1*p2^a2*...*pn^an , b=p1^b1*p2^b2*...*pn^an
其中每個次數都是非負整數,在上述兩個乘積中都包含了a和b的素分解中的所有素數,次數有可能為0.我們注意到:
最大公約數:(a,b)=p1^min(a1,b1)*p2^min(a2,b2)...pn^min(an,bn)
因為對每個素數pi,a和b恰好共同擁有min(ai,bi)個因子pi
素分解哈可以用來求同時為兩個正整數的倍數的最小整數。當分數相加時,就會遇到求這種整數的問題
定義:兩個非零整數a和b的最小公倍數是能夠被a和b整除的最小正整數。
a和b的最小公倍數記為[a,b]
一旦我們知道了a和b的素分解
最小公倍數:(a,b)=p1^max(a1,b1)*p2^ max(a2,b2)...pn^ max(an,bn)
引理:如果x和y為實數,則max(x,y)+min(x,y)=x+y
定理:如果a和b是正整數,則[a,b]=ab/(a,b),其中[a,b]為最小公倍數(a,b)為最大公約數
引理:設m和n是互素的正整數,那麼如果d是mn的一個正因子,則存在唯一的一對m的正因子d1和n的正因子d2使得d=d1*d2.反之,如果d1和d2分別是m和n的正因子,則d=d1*d2是mn的正因子
狄利克雷定理中一中特殊情形的證明:唯一因子分解可以用來證明狄利克雷定理的一中特殊情形,狄利克雷定理表明當a和b為互素的正整數時等差數列an+b包含無窮多的素數。
定理:存在無窮多個形如4n+3的素數,其中n為正整數
引理:如果a和b都是形如4n+1的整數,則乘積ab也是這種形式
關於有理數的結果:如果α是有理數,則我們可以有無窮多種方法把α寫成兩個整數的商,因為如果α=a/b,其中a和b是滿足b!=0的整數,則只要k為非零整數就有α=ka/kb。易見一個正有理數可以被唯一地寫成兩個互素的正整數的上;當這樣寫的時候,我們說這個有理數為既約的(lowest term)。我們注意有理數11/21是既約的
定理:設α為多項式x^n+C(n-1)x^n-1+...+C1x+C0的根,其中係數C0,C1,...,Cn-1為整數,則α或者是整數或者是無理數
還有一個定理我打不出來。。。是算數基本定理將黎曼zeta函式和素數聯絡起來的。。。