**提示**：此条目页的主题不是**整数分拆**。 

**整數分解**（英語：）又称**整数因式分解**、**整数因子分解**，或**整数因子化**，在数论中，"整数的因数分解"是指在可能的情况下，将一个正整数分解为更小整数的乘积，即寫成幾個因數的乘積。若进一步限制因数为质数，则这个过程称为**质因数分解**（英語：），其中包括检验给定整数是否为质数。

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

因子分解
----

完整的因子列表可以根據因數分解推導出，將冪從零不斷增加直到等於這個數，算出可以整除這個數的所有整數。  

例如，因為{\displaystyle 45=\,}{\displaystyle 3^{2}\times 5}，由此可知，  

45可以被以下數字因子分解:

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

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

實際應用
----

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

當今的新進展
------

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

時間是：

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

### 難度與複雜度

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

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

整數分解算法
------

### 特殊用途算法

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

* 試除法
* 輪式因數分解法（英语：）
* 波拉德RHO算法（英语：）
* 代数群因式分解算法（英语：），其中包括Pollard's *p* − 1算法（英语：）、Williams' *p* + 1算法（英语：）和Lenstra橢圓曲線分解法（英语：）
* 費馬質數判定法
* 欧拉因式分解法
* 特殊數域篩選法（英语：）

### 一般用途算法

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

* Dixon算法（英语：）
* 連分數分解法（英语：）（CFRAC）
* 二次篩選法
* 有理筛选法
* 普通數域篩選法
* Shanks' square forms factorization（英语：）（SQUFOF）

### 其他算法

* 秀尔算法

參見
--

* 質因數表
* 整数分解记录

* icon数学主题

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
和因數有關的整數分類 |
| --- |
|  |
| 簡介 | 
* 質因數分解
* 因數
* 元因數
* 除數函數
* 質因數
* 算术基本定理

 | Divisibility of 60 |
|  |
| 依因數分解分類 | 
* 质数
* 合数
* 半素数
* 普洛尼克数
* 楔形数
* 无平方数因数的数
* 冪數
* 質數冪
* 平方數
* 立方數
* 次方數
* 阿喀琉斯數
* 光滑數
* 正规数
* 粗糙數
* 不尋常數

 |
|  |
| 依因數和分類 | 
* 完全数
* 殆完全數
* 准完全数
* 多重完全數
* Hemiperfect數
* Hyperperfect number（英语：）
* 超完全數
* 元完全數
* 半完全数
* 本原半完全数
* 實際數

 |
|  |
| 有許多因數 | 
* 过剩数
* 本原過剩數
* 高過剩數
* 超過剩數
* 可羅薩里過剩數
* 高合成数
* Superior highly composite number（英语：）
* 奇異數

 |
|  |
| 和真因子和數列有關 | 
* 不可及数
* 相亲数
* 交際數
* 婚約數

 |
|  |
| 其他 | 
* 亏数
* 友誼數
* 孤獨數
* 卓越数
* 歐爾調和數
* 佩服數
* 節儉數
* 等數位數
* 奢侈數

 |

 |

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
数论算法 |
| --- |
|  |
| 素数测试 | 
* AKS
* APR（英语：）
* Baillie–PSW（英语：）
* 椭圆曲线（英语：）
* Pocklington（英语：）
* 费马
* 卢卡斯（英语：）
* *卢卡斯-莱默*
* *Lucas–Lehmer–Riesel（英语：）*
* *普罗斯*
* *Pépin（英语：）*
* 二次Frobenius（英语：）
* Solovay–Strassen（英语：）
* 米勒-拉宾

 |
|  |
| 質數生成（英语：） | 
* 阿特金筛法（英语：）
* 埃拉托斯特尼筛法
* Pritchard筛法（英语：）
* Sundaram筛法（英语：）
* 輪式因數分解法（英语：）

 |
|  |
| 整数分解 | 
* 連分數分解 (CFRAC)（英语：）
* Dixon's（英语：）
* Lenstra橢圓曲線 (ECM)（英语：）
* 欧拉因式分解法
* 波拉德ρ算法（英语：）
* *p* − 1（英语：）
* *p* + 1（英语：）
* 二次篩選法
* 普通数域筛选法
* *特殊數域篩選法 (SNFS)（英语：）*
* 有理筛选法
* 费马因式分解法（英语：）
* Shanks二次形式（英语：）
* 试除法
* 秀爾演算法

 |
|  |
| 乘法算法 | 
* 古埃及乘算（英语：）
* 長乘法
* 卡拉楚巴算法
* 图姆-库克算法
* 頌哈吉-施特拉森演算法
* 富尔算法（英语：）

 |
|  |
| 歐幾里德除法除法算法 | 
* 二進制（英语：）
* 倍塊法（英语：）
* Fourier（英语：）
* Goldschmidt（英语：）
* Newton-Raphson（英语：）
* 長除法
* 短除法
* SRT

 |
|  |
| 离散对数 | 
* 大步小步算法
* 波拉德ρ算法
* Pollard kangaroo（英语：）
* Pohlig–Hellman（英语：）
* Index calculus（英语：）
* Function field sieve（英语：）

 |
|  |
| 最大公因數 | 
* 二进制最大公因数算法（英语：）
* 輾轉相除法
* 扩展欧几里得算法
* Lehmer's（英语：）

 |
|  |
| 二次剩余 | 
* Cipolla（英语：）
* Pocklington's（英语：）
* Tonelli–Shanks（英语：）
* Berlekamp（英语：）
* Kunerth（英语：）

 |
|  |
| 其他算法 | 
* Chakravala（英语：）
* Cornacchia（英语：）
* 整數關係（英语：）（LLL（英语：）；KZ（英语：））
* 平方求冪
* 整数平方根
* 模幂运算
* 蒙哥马利算法
* Schoof（英语：）
* 特拉亨伯格系統（英语：）

 |
|  |
| 
* *斜体*表示该算法只适用于特殊形式的数字

 |

 |


1. ↑ .  [2023-08-14]. （原始内容存档于2023-08-14）.