1. 程式人生 > 其它 >信安數基學習筆記(1)

信安數基學習筆記(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

bk的形式,記為(akak-1.....a1b

  顯然,任意整數進位制的表示是一定存在的並且是唯一的,這一點顯而易見,因此這部分暫且略過

運算時間估計:
  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的因數,則ed,則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時)