信安數基學習筆記(1)
密碼學中經常需要使用到數論知識
再加上不少學長說信安數基這門課很難
因此我決定在假期先學學信安數基
我使用的是清華大學出版社的版本
第一章:整數的可除性
整除:a,b為任意整數,若存在整數q使得a=qb,則稱b整除a,稱a為b的倍數,b為a的因數
素數:對除0與±1以外的整數,若它除了±1與±n以外沒有其他因數,則稱他為素數(或質數),否則稱它為合數
推論1:若n是質數,則-n也是質數;若n是合數,則-n也是合數
推論2:設n是一個正合數,p是n的一個大於1的最小正因數,則p一定是質數
推論3:對整數a,若對任意屬於[2,根號n]的整數b,b都不是a的因數,則a是質數
這三個推論都較為顯然,藉此,可以得到一種快速找到某範圍內質數的演算法
erratosthenes篩法:對於給定的正整數N,要求找到不大於N的所有質數,只需要列出從2到N的所有整數,並從中刪去從2到根號N的所有質數的倍數(除它們本身)即可
例:要找出從2到16的所有質數,只需要列出2到4間的所有質數(2與3),然後從2到16間刪去它們的倍數即可
歐幾里得除法:設a,b是兩個整數,其中b>0,對任意整數c,存在唯一的整數q,r使得a=qb+r 其中c<=r<b+c
證明:存在性:考慮一個整數序列-3b+c,-2b+c,-b+c,c,b+c,2b+c.....,,它將實數軸氛圍了若干個長度為b的取件,a一定落在某個區間之中,則q,r一定存在
唯一性:如果分別有q,r與s,t滿足以上性質,則a=qb+r=sb+t,則(q-s)b=t-r; q不等於r時,左邊的絕對值大於等於b,右邊的絕對值小於b,矛盾
雖然c是可以任取的整數,但是我們一般只會取幾個特殊的值(括號內為b=4時的例子)
c=0 此時r稱為最小非負餘數 (0123)
c=1 此時r稱為最小正餘數 (1234)
c=-b+1 此時r稱為最大非正餘數 (0,-1,-2,-3)
c=-b 此時r稱為最大負餘數 (-1,-2,-3,-4)
c=[-b/2]時 此時稱r為絕對值最小余數(-2,1,0,1)
進位制:設b是大於1的整數,則每個正整數n可唯一表示成∑ak
顯然,任意整數進位制的表示是一定存在的並且是唯一的,這一點顯而易見,因此這部分暫且略過
運算時間估計:
O符號:設f(n)與g(n)都是正整數n的正值函式,若存在正常數C使得對任意n,f(n)≤Cg(n),稱g(n)位f(n)的界,記作f=O(g)
運算時間:考慮到計算機使用的是位元運算,則
a+b的運算時間為O(max(log2 a,log2 b))
a-b的運算時間為O(max(log2 a,log2 b))
a*b的運算時間為O(log2 a,log2 b)
a/b的運算時間為O(log2 a,log2 b) (歐幾里得除法)
最大公因數:如果若干整數不全為0,那麼它們的共同因數中最大的數就是它們的最大公因數,記作(a1,a2,......,ak)
特別地,若若干整數的最大公因數為1,則稱它們互質
推論1:若干個數的所有公因數都是它們最大公因數的因數
推論2:a1a2......ak的最大公因數是s1a1+s2a2+......+skak的最小值且該集合中的所有數都是它的倍數且這樣的s一定存在
推論3:若a,b,c為3個不全為0的整數,且a=qb+c,則ab的最大公因數與bc的最大公因數相同
證明:設d=(a,b) e=(b,c) 由推論2,d是a-qb=c的因數,因此d≤e,而e是qb+c=a的因數,則e≤d,則d=e
由推論3,可以得到一種計算兩數最大公因數的方法
廣義歐幾里得除法:計算兩數ab的最大公因數,只需反覆用除數除以餘數直到整除為止即可,最大公因數為最後一個非零餘數
由數學歸納法可推出,計算次數n滿足b≥(1/√5)(((1+√5)/2)n+1-((1-√5)/2)n+1)
之後可以進一步推出,計算所需時間為O(log a*log b*log b) (a>b時)