fbpx
维基百科

整数分解

整數分解(英語:integer factorization)又称整数因式分解整数因子分解,或整数因子化[1],在数论中,“整数的因数分解”是指在可能的情况下,将一个正整数分解为更小整数的乘积,即寫成幾個因數的乘積。若进一步限制因数为质数,则这个过程称为质因数分解(英語:prime factorization),其中包括检验给定整数是否为质数。

例如,給出45這個數,它可以分解成。根據算術基本定理,這樣的分解結果應該是獨一無二的。這個問題在代數學密碼學計算複雜性理論量子計算機等領域中有重要意義。

因子分解 编辑

完整的因子列表可以根據因數分解推導出,將從零不斷增加直到等於這個數,算出可以整除這個數的所有整數。
例如,因為  ,由此可知,
45可以被以下數字因子分解:

  • 30 ×50 =1
  • 30×51 =5
  • 31×50 =3
  • 31×51 =15
  • 32×50 =9
  • 32×51 =45

相對應的,因數分解只包括因數因子。參見因數分解算法。

實際應用 编辑

給出兩個整數,很容易就能將它們兩個相乘。但是,給出一個大整數(100位數以上的整數),找出它們的因數就顯得不是那麼容易了。這就是許多現代密碼系統的關鍵所在。如果能夠找到解決整數分解問題的快速方法,幾個重要的密碼系統將會被攻破,包括RSA加密演算法公鑰算法和Blum Blum Shub英语Blum Blum Shub隨機數發生器。儘管快速分解是攻破這些系統的方法之一,仍然會有其它的不涉及到分解的其它方法。所以情形完全可能變成這樣:整數分解問題仍然是非常困難,這些密碼系統卻是能夠很快攻破。有的密碼系統則能提供更強的保證:如果這些密碼系統被快速破解(即可以以多項式時間複雜度破解),則可以利用破解這些系統的算法來快速地以多項式時間複雜度分解整數。換句話說,破解這樣的密碼系統不會比整數分解更容易。這種的密碼系統包括Rabin cryptosystem英语Rabin cryptosystem(RSA的一個變體)以及Blum Blum Shub英语Blum Blum Shub隨機數發生器。

當今的新進展 编辑

2005年,作為公共研究一部分的,有663個二進制數位之長的RSA200英语RSA numbers已經被一種一般用途的方法所分解。如果一個大的,有n二進制數位長度的數,是兩個差不多大小相等的因數的乘積,現在還沒有很好的演算法來以多項式時間複雜度分解它。即意味著沒有已知算法可以在Onk)(k為常數)的時間內分解它,但是現在的算法也是比O(en)快的。亦即,現在我們已知最好的算法比指數數量級時間要快,比多項式數量級時間要慢。已知最好的漸近線運行時間是普通數域篩選法(GNFS)。

時間是:

 

對於平常的計算機,GNFS是我們已知最好的對付n個二進制數位大因數的方法。不過,對於量子計算機彼得·秀尔在1994年發現了一種可以用多項式時間來解決這個問題的算法。如果大的量子計算機建立起來,會對密碼學有很重要的意義。這個算法在時間上只需要O(n3),空間只要O(n)就可以了。構造出這樣一個算法只需要2n個量子位。2001年,第一個7量子位的量子計算機第一個運行這個算法,它分解的數是15。

難度與複雜度 编辑

現在還不確切知道整數分解屬於哪個複雜度類。我們知道這個問題的判定問題形式(「請問N是否有一個比M小的因數?」)是在NP反NP之中。因為不管是答案為是或不是,我們都可以用一個質因數以及該質因數的質數證明來驗證這個答案。由秀爾演算法可知,這個問題在BQP中。大部份的人則懷疑這個問題不在PNP完全、以及反NP完全這三個複雜性類別中。如果這個問題可以被證明為NP完全或反NP完全,則我們便可推得NP=反NP。這將會是個很震撼的結果,也因此大多數人猜想整數分解這個問題不在上述的複雜性類別中。也有許多人嘗試去找出多項式時間的演算法來解決這個問題,但是都尚未成功,因此這個問題也被多數人懷疑不在P中。

判定一個整數是否是質數比分解該整數簡單許多。AKS算法証明前者可以在多項式時間中解決。 測試一個數是否為質數是RSA演算法中非常重要的一環,因為它在一開始的时候需要找很大的質數。

整數分解算法 编辑

特殊用途算法 编辑

一個特別的因數分解算法的運行時間依賴它本身的未知因子:大小,類型等等。在不同的算法之間運行時間也是不同的。

  • 試除法
  • 輪式因數分解法英语Wheel factorization
  • 波拉德RHO算法英语Pollard's rho algorithm
  • 代数群因式分解算法英语Algebraic-group factorisation algorithms,其中包括Pollard's p − 1算法英语Pollard's p − 1 algorithmWilliams' p + 1算法英语Williams' p + 1 algorithmLenstra橢圓曲線分解法英语Lenstra elliptic curve factorization
  • 費馬質數判定法
  • 欧拉因式分解法英语Euler's factorization method
  • 特殊數域篩選法英语Special number field sieve

一般用途算法 编辑

一般用途算法的運行時間僅僅依賴要分解的整數的長度。這種算法可以用來分解RSA數。大部分一般用途算法基於平方同余方法。

  • Dixon算法英语Dixon's algorithm
  • 連分數分解法英语Continued fraction factorization(CFRAC)
  • 二次篩選法
  • 有理筛选法
  • 普通數域篩選法
  • Shanks' square forms factorization英语Shanks' square forms factorization(SQUFOF)

其他算法 编辑

參見 编辑

  1. ^ https://www.termonline.cn/word/556464/1#s1

整数分解, 提示, 此条目的主题不是整数分拆, 此條目没有列出任何参考或来源, 2015年3月14日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 整數分解, 英語, integer, factorization, 又称整数因式分解, 整数因子分解, 或整数因子化, 在数论中, 整数的因数分解, 是指在可能的情况下, 将一个正为更小整数的乘积, 即寫成幾個因數的乘積, 若进一步限制因数为质数, 则这个过程称为质因数分解, 英語, prime, . 提示 此条目的主题不是整数分拆 此條目没有列出任何参考或来源 2015年3月14日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 整數分解 英語 integer factorization 又称整数因式分解 整数因子分解 或整数因子化 1 在数论中 整数的因数分解 是指在可能的情况下 将一个正整数分解为更小整数的乘积 即寫成幾個因數的乘積 若进一步限制因数为质数 则这个过程称为质因数分解 英語 prime factorization 其中包括检验给定整数是否为质数 例如 給出45這個數 它可以分解成 displaystyle 3 2 5 displaystyle 3 2 times 5 根據算術基本定理 這樣的分解結果應該是獨一無二的 這個問題在代數學 密碼學 計算複雜性理論和量子計算機等領域中有重要意義 目录 1 因子分解 2 實際應用 3 當今的新進展 3 1 難度與複雜度 4 整數分解算法 4 1 特殊用途算法 4 2 一般用途算法 4 3 其他算法 5 參見因子分解 编辑完整的因子列表可以根據因數分解推導出 將冪從零不斷增加直到等於這個數 算出可以整除這個數的所有整數 例如 因為45 displaystyle 45 nbsp 3 2 5 displaystyle 3 2 times 5 nbsp 由此可知 45可以被以下數字因子分解 30 50 1 30 51 5 31 50 3 31 51 15 32 50 9 32 51 45相對應的 因數分解只包括因數因子 參見因數分解算法 實際應用 编辑給出兩個整數 很容易就能將它們兩個相乘 但是 給出一個大整數 100位數以上的整數 找出它們的因數就顯得不是那麼容易了 這就是許多現代密碼系統的關鍵所在 如果能夠找到解決整數分解問題的快速方法 幾個重要的密碼系統將會被攻破 包括RSA加密演算法公鑰算法和Blum Blum Shub 英语 Blum Blum Shub 隨機數發生器 儘管快速分解是攻破這些系統的方法之一 仍然會有其它的不涉及到分解的其它方法 所以情形完全可能變成這樣 整數分解問題仍然是非常困難 這些密碼系統卻是能夠很快攻破 有的密碼系統則能提供更強的保證 如果這些密碼系統被快速破解 即可以以多項式時間複雜度破解 則可以利用破解這些系統的算法來快速地以多項式時間複雜度分解整數 換句話說 破解這樣的密碼系統不會比整數分解更容易 這種的密碼系統包括Rabin cryptosystem 英语 Rabin cryptosystem RSA的一個變體 以及Blum Blum Shub 英语 Blum Blum Shub 隨機數發生器 當今的新進展 编辑2005年 作為公共研究一部分的 有663個二進制數位之長的RSA200 英语 RSA numbers 已經被一種一般用途的方法所分解 如果一個大的 有n個二進制數位長度的數 是兩個差不多大小相等的因數的乘積 現在還沒有很好的演算法來以多項式時間複雜度分解它 即意味著沒有已知算法可以在O nk k為常數 的時間內分解它 但是現在的算法也是比O en 快的 亦即 現在我們已知最好的算法比指數數量級時間要快 比多項式數量級時間要慢 已知最好的漸近線運行時間是普通數域篩選法 GNFS 時間是 O exp 64 9 n 1 3 log n 2 3 displaystyle mathrm O left exp left left frac 64 9 n right frac 1 3 log n frac 2 3 right right nbsp 對於平常的計算機 GNFS是我們已知最好的對付n個二進制數位大因數的方法 不過 對於量子計算機 彼得 秀尔在1994年發現了一種可以用多項式時間來解決這個問題的算法 如果大的量子計算機建立起來 會對密碼學有很重要的意義 這個算法在時間上只需要O n3 空間只要O n 就可以了 構造出這樣一個算法只需要2n個量子位 2001年 第一個7量子位的量子計算機第一個運行這個算法 它分解的數是15 難度與複雜度 编辑 現在還不確切知道整數分解屬於哪個複雜度類 我們知道這個問題的判定問題形式 請問N是否有一個比M小的因數 是在NP與反NP之中 因為不管是答案為是或不是 我們都可以用一個質因數以及該質因數的質數證明來驗證這個答案 由秀爾演算法可知 這個問題在BQP中 大部份的人則懷疑這個問題不在P NP完全 以及反NP完全這三個複雜性類別中 如果這個問題可以被證明為NP完全或反NP完全 則我們便可推得NP 反NP 這將會是個很震撼的結果 也因此大多數人猜想整數分解這個問題不在上述的複雜性類別中 也有許多人嘗試去找出多項式時間的演算法來解決這個問題 但是都尚未成功 因此這個問題也被多數人懷疑不在P中 但判定一個整數是否是質數比分解該整數簡單許多 AKS算法証明前者可以在多項式時間中解決 測試一個數是否為質數是RSA演算法中非常重要的一環 因為它在一開始的时候需要找很大的質數 整數分解算法 编辑特殊用途算法 编辑 一個特別的因數分解算法的運行時間依賴它本身的未知因子 大小 類型等等 在不同的算法之間運行時間也是不同的 試除法 輪式因數分解法 英语 Wheel factorization 波拉德RHO算法 英语 Pollard s rho algorithm 代数群因式分解算法 英语 Algebraic group factorisation algorithms 其中包括Pollard s p 1算法 英语 Pollard s p 1 algorithm Williams p 1算法 英语 Williams p 1 algorithm 和Lenstra橢圓曲線分解法 英语 Lenstra elliptic curve factorization 費馬質數判定法 欧拉因式分解法 英语 Euler s factorization method 特殊數域篩選法 英语 Special number field sieve 一般用途算法 编辑 一般用途算法的運行時間僅僅依賴要分解的整數的長度 這種算法可以用來分解RSA數 大部分一般用途算法基於平方同余方法 Dixon算法 英语 Dixon s algorithm 連分數分解法 英语 Continued fraction factorization CFRAC 二次篩選法 有理筛选法 普通數域篩選法 Shanks square forms factorization 英语 Shanks square forms factorization SQUFOF 其他算法 编辑 秀尔算法參見 编辑 nbsp 数学主题 質因數表 https www termonline cn word 556464 1 s1 取自 https zh wikipedia org w index php title 整数分解 amp oldid 79687473, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。