570 likes | 808 Views
Integers. §3.4 The Integers and Division §3.5 Representations of Integers §3.6 Integers and Algorithms §3.7 Application of Number Theory. 整數與除法 ( §3.4). 在數學中牽涉到整數及其性質的分支稱為數論 (number theory) 。由本節開始,我們將闡述貫穿電腦科學中所用到之數論的基本概念。 除法與模算術等基本概念 質數與最大公因數的計算 介紹幾個與數論有關的演算法,並探究這些演算法的複雜度
E N D
Integers §3.4 The Integers and Division §3.5 Representations of Integers §3.6 Integers and Algorithms §3.7 Application of Number Theory
整數與除法(§3.4) • 在數學中牽涉到整數及其性質的分支稱為數論(number theory)。由本節開始,我們將闡述貫穿電腦科學中所用到之數論的基本概念。 • 除法與模算術等基本概念 • 質數與最大公因數的計算 • 介紹幾個與數論有關的演算法,並探究這些演算法的複雜度 • 介紹數論的重要結果及其在電腦算術與密碼學上的應用
除法 • 定義:Let aand bbe integers and let a 0. We say that a divides b (a整除b), if there is an integer c such that b = ac. Noted ab. When a divides b, we call a is a factor (因數)of b, and b is a multiple (倍數) of a.
例:判斷是否37與312是否成立。 • 解: • 例:令n與d為正整數。有多少個小於n的正整數能被d整除? • 解:
定理:令a,b與c為整數。則 (1) 若ab且ac,則a(b + c)。 (2) 若ab,則對所有的整數c,abc。 (3) 若ab且bc,則ac。 • 系理:若a,b與c為整數,使得ab和ac,則amb + nc,其中m與n為整數。 • 除法定理(The Division Algorithm) 令a為整數而d為正整數。存在唯一的整數q和r,使得 a = dq + r,其中0 r < d。
定義:在除法定理的等式中,d稱為除數(divisor)、a稱為被除數(dividend)、q為商數(quotient),而r為餘數(remainder)。下面的符號用來表現商數與餘數:定義:在除法定理的等式中,d稱為除數(divisor)、a稱為被除數(dividend)、q為商數(quotient),而r為餘數(remainder)。下面的符號用來表現商數與餘數: q = adivd,r = amodd。 • 例:當101除以11時,商數與餘數各為何? • 解:
例:當11除以3時,商數與餘數各為何? • 解:
定義:If a and b are integers, m is a positive integer. If mdivides ab, then we say that a is congruent to b modulo m(在模m時a同餘於b). Denote that ab (mod m). • 定理: If a and b are integers, m is a positive integer. Then ab (mod m) if and only if amod m = bmod m.
例: Is 17 congruent to 5 modulo 6? Is 24 congruent to 5 ? • 解:
定理:Let m be a positive integer. When a is congruent to b mod m if and only if there is an integer k such thata = b + km. • 證明:
定理: Let m be a positive integer. If ab (mod m) and cd (mod m), then a + c b + d (mod m) and acbd (mod m)。 • 證明:
例:因為7 2 (mod 5)與11 1 (mod 5), 根據定理, 18 = 7 + 11 2 + 1 = 3 (mod 5)。 所以, 77 = 711 21 = 2 (mod 5)。
系理:Let a and b be integers and let m be a positive integers. Tehn (a + b) mod m = ((amodm) + (bmod m)) modm, and abmod m = ((amodm)(bmod m)) modm. • 證明:
同餘的應用 • 散置函數(hashing function) • 在保險公司的中央電腦內都會存有每位客戶的資料。必需如何安排每位客戶資料的記憶位址,才能很方便的被檢索出來?這個問題的解決辦法是,選擇一個合適的散置函數。資料使用鍵值(key)來識別。例如,客戶資料通常以社會安全號碼當成鍵值來做識別。 • 最經常被使用的散置函數為h(k) = kmodm,其中m為可使用之記憶位址個數。 • 散置函數必須很容易計算,檔案才能很快的找到。 • 散置函數應該要映成的,這樣所有記憶位址都有可能使用到。
密碼學 • 同餘最重要的應用之一就是密碼學(cryptology),一個關於祕密信息的研究。這種製造祕密信息的過程稱之為加密(encryption)。 • 密碼的使用,最早可追朔至凱撒大帝(Julius Caesar)。他將信息中每個字的字母向後移動三個,而最後面的三個字母則以最前三個字母來替代。
例:根據凱撒大帝的密碼製作方式,下面的信息“MEET YOU IN THE PARK”會被轉換成什麼? • 解:首先將每個字母改寫成數字如下: 利用f(p) = (p + 3) mod 26找出替換的數字, 最後,轉換成字母,信息如下:
質數 • 定義:一個大於1的正整數p稱為質數(prime),如果p只有1和p兩個正因數。一個大於1的正整數若不為質數,便稱為合成數(composite)。 • 注意:整數n為合成數若且惟若存在整數a, 1 < a < n,使得an。 • 例:整數7為質數,因為其正因數只有1與7。而9是個合成數,因為它能被3整除。
算術基本定理(The fundamental Theorem of Arithmetic) 每個大於1的正整數都能唯一表為一個質數,或是兩個或兩個以上之質數(依非遞減之方式排列)的乘積。 • 100 = 2222 = 2252 641 = 641 999 = 33337 = 3337
定理:若n為合成數,則 必有一個n的質因數不大於(n)1/2。 • 證明:若n為合成數,則根據合成數的定義,存在因數a,1 < a < n,使得an。故,n = ab,其中b為一個大於1的正整數。若a > (n)1/2且b > (n)1/2,則ab > (n)1/2 (n)1/2 = n,會產生矛盾。所以得證 a (n)1/2且b (n)1/2。
例: 證明101為質數。 • 解:
定理:質數有無限多個。 • 證明:我們將使用歸謬證法。 假設質數只有有限個,p1, p2, …, pn。 令Q = p1p2 …pn + 1。 根據算術基本定理,Q為質數,或是能表成兩個或兩個以上質因數的乘積。然而,由於Qp1p2 …pn = 1 ,沒有任何一個質數pj能整除Q。因為沒有一個質數能整出Q,所以Q本身為質數。如此一來,便與一開始的假設質數矛盾。在這個證明中,我們明確的找出了一個質數不在原來所列之質數序列之中。
近300年來,所能找出的最大質數,都有個特殊的形式,2p 1,其中p為質數。這樣的質數稱為梅遜質數(Mersenne primes),根據法國修道士馬梅遜之姓氏命名。之所以知道質數通常有這樣的形式,是因為有個測試法,稱為盧卡司-里莫測試法(Lucas-Lehmer test),能非常有效的判斷出2p 1的數是否為質數。而且,現今任何測試其他形式的數是否為質數的方法,都沒能如盧卡司-里莫測試法來得有效率。 • 例:下列個數22 1 = 3,23 1 = 7與25 1 = 31都是質數,而211 1 = 2047則不為質數,因為2047 = 2389。
質數定理(The Prime Number Theorem) 當x區近於無窮大時,不大於x之質數的個數和x/lnx的比值會趨近1。(其中lnx為x之自然對數。)
有關質數之猜想與未定論問題 • 哥德巴赫猜想(Goldbach’s Conjecture) 1742年時,哥德巴赫寫了一封信給尤拉,猜測每一個大於5的奇數都能表示成三個質數的和。尤拉回信說,這個猜想其實等價於所有大於2的偶數,都能寫成兩個質數之和。現在,這個猜想被稱為哥德巴赫猜想。我們能檢驗幾個較小的偶數: 4 = 2 + 2,6 = 3 + 3,8 = 3 + 5,10 = 3 + 7, 12 = 5 + 7等等。利用現代電腦,哥德巴赫猜想能檢驗至非常大的數。至2006年初,這個猜想已經被檢驗至21017。
攣生質數猜想(The Twin Prime Conjecture)所謂攣生質數指的是一對相差2的質數,如3與5,5與7,11與13,17與19還有4967和4969。攣生質數猜想聲稱這樣的攣生質數有無限多對。目前所知,最接近的證明為:存在無限多對的p與p + 2,其中p為質數,而p + 2為質數或是兩質數之積。(於1966年,陳潤證出。)截至2006年初,所知最大的攣生質數為16,869,987,339,9752171,960 1這兩個數包含51,779位數。
最大公因數與最小公倍數 • 定義:令a與b為兩個非零的整數。一個滿足da與db的最大的整數d稱為a與b的最大公因數(the greatest common divisor),記為gcd(a, b)。 • 例:何為24與36的最大公因數? • 解: • 例:何為17與22的最大公因數? • 解:
定義:稱整數a與b是互質的(relatively prime)若它們的最大公因數是1。 • 例:根據上面的範例可知整數17與22互質,因為gcd(17, 22) = 1。
定義:稱整數a1, a2, …, an是兩兩互質的(pairwise relatively prime),如果對任意1 i < jn,都有gcd(ai, aj) = 1。 • 例:判斷10、17和21是否兩兩互質;而10、19和24是否兩兩互質。 • 解:
例:因為120與500之質因數分解為120 = 2335,500 = 2253。所以,它們的最大公因數為 gcd(120, 500) =
定義:正整數a與b之最小公倍數(the least common multiple)為能同時被a與b整除之最小正整數,記為lcm(a, b)。 • 例:何為233572與2433的最小公倍數? • 解:根據公式 lcm(233572, 2433) =
整數表示法(§3.5) • 定理:令b為大於1的整數。若n為正整數,其可唯一表示成下列形態: n = akbk+ ak1bk1+ … + a1b + a0 其中k為非負整數,而ak, ak1,…,a1, a0為小於b的非負整數,且ak 0。 • 定理:令a與b為正整數。 則ab = gcd(a, b)lcm(a, b)。
例:二進位表示法(1 0101 1111)2的十進位表示法為何? • 解:由於 (1 0101 1111)2 =
例:十六進位表示法(2AE0B)16的十進位表示法為何?例:十六進位表示法(2AE0B)16的十進位表示法為何? • 解:由於 (2AE0B)16 =
整數運算之演算法(§3.6) • 例:將a = (1110)2與b = (1011)2相加。 • 解:
例:使用演算法將兩個n位元的整數相加,需要用到多少次的位元加法次數?例:使用演算法將兩個n位元的整數相加,需要用到多少次的位元加法次數? • 解:兩整數相加,基本上是連續相加一對位元和一個進位位元(若必須進位的話)。所以每一個位置需要相加的次數至多為3次。所以,將兩個n位元的整數相加,需要用到的位元加法次數為O(n)。
例:利用乘法演算法將整數a與b相乘時,需要用到多少次的位元加法以及位元位移。 • 解:在演算法中,使用將部份積c0, c1, c2, …和cn1相加來求出a與b的乘積。當bj = 1時,計算部份積cj是將a的二進位表示法位移j個位置;當bj = 0時,不需要做位移,因為 cj = 0。所以,找出n個整數,abj2j,n = 0, 1, 2, …, n1,需要至多 0 + 1 + 2 + … + n 1 個位移。根據3.2節的範例,移動次數為O(n2)。 將整數abj由j = 0加到j = n1,需要將n-位元整數加上一個(n+1)-位元整數,…,加上一個(2n)-位元整數。根據上面的範例知道每次相加需要做O(n)次的位元加法。所以,總共需要的加法次數為O(n2)。
歐基里得演算法 • 引理:令a = bq + r,其中a, b, q與r皆為整數。則gcd(a, b) = gcd(b, r)。 • 歐基里德演算法(Euclidean algorithm;或稱為輾轉相除法) • 不斷地將想要求出最大公因數的兩個整數,利用除法將數字約化,直至其中一個變成零為止。
例:利用歐基里得演算法找出414與662的最大公因數。例:利用歐基里得演算法找出414與662的最大公因數。 • 解:
數論的應用(§3.7) • 一些有用的結果 • 定理:若a與b為正整數,則存在整數s與t,使得 gcd(a, b) = sa + tb。 • 引理:若a,b和c為正整數,滿足gcd(a, b) = 1和abc,則ac。 • 引理:若p為質數。且pa1a2…an,其中每一個aj都是整數,則存在某個j,使得paj。 • 定理:令m為正整數,而a、b和c為整數。若acbc (mod m),而且gcd(c, m) = 1,則ab (mod m)。
線性同餘 • 定理:If a and m( > 1) are relatively prime integers, then an inverse of a modulo m exists. (若a與m( > 1)為互質整數時,則a在模m下的反元素存在。此外,在模m下此反元素是唯一的。也就是說,存在唯一比m小的正整數a,使得a是a在模m下的反元素,而其他的反元素與a在模m下皆同餘。)
例:線性同餘3x 4 (mod 7)的解為何? • 解:根據前例,我們知道3在模7下的反元素為2。
中國餘式定理 • 例:在第一世紀中,中國是學家孫子問到: 今有物,不知其數。三三數之,賸二;五五數之,賸三;七七數之,賸二。問:問幾何? 這個問題翻譯成數學模型如下:求解下列同餘方程式系統
中國餘式定理 另m1, m2, …, mn為兩兩互質的整數,而a1, a2, …, an為任意整數。則下列系統 xa1 (mod m1) xa2 (mod m2) xan (mod mn) 在模數m = m1m2 …mn下有唯一解。(也就是說,有一個解x,0 xm,而其他的解都與x在模數m下同餘。)
要證明此定理,不但要找出同餘方程式系統的解,而且指出在模數m下,解是唯一的。首先,我們將找出一個方法來建構出方程式系統的解。要證明此定理,不但要找出同餘方程式系統的解,而且指出在模數m下,解是唯一的。首先,我們將找出一個方法來建構出方程式系統的解。 令Mk = m/mk,因為當ik時,mi與mk沒有公因數,所以 gcd(mk, Mk) = 1。根據定理,能找到Mk在模數mk下的反元素yk使得Mkyk 1 (mod mi),其中k = 1, 2, …, n。 接下來令x = a1M1y1 + a2M2y2 +…+ anMnyn。我們將證明x即為方程式系統的解。因為Mj 0 (mod mk),其中ik。所以,x中所有的項,除了第k項外,其他項在模數mk下皆與0同餘。因此,對所有的k = 1, 2, …, n, xakMkykak (mod mk)。即,x為方程式系統的解。
例:首先,令m = 357 = 105, M1 = m/3 = 35, M2 = m/5 = 21, M3 = m/7 = 15。能找出在模數3下2是M1 = 35的反元素,因為235 = 70 1 (mod 3);在模數5下1是M2 = 21的反元素,因為121 = 21 1 (mod 5);而在模數7下1是M3 = 15的反元素,因為115 = 15 1 (mod 7)。故, x = a1M1y1 + a2M2y2 + a3M3y3 = 2352 + 3211 + 2151 = 233 23 (mod 105)。 我們能說23是為方程式系統最小的整數的解。
大數之電腦算術 • 假設m1, m2, …, mn為大於2且兩兩互質的整數,且令m為這些整數之積。根據中國餘式定理,我們知道整數a(0 a m)能被表示成一個由a除以mi,i = 1, 2, …, n,所得餘數之有序n項。也就是說,a能唯一表成(amod m1, amod m2, …, amod mn)。 • 例:將12以下的整數,利用除以3與4之餘數,表成數對的形式。 • 解: