族谱网 头条 人物百科

整数分解

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:216
转发:0
评论:0
因子分解完整的因子列表可以根据约数分解推导出,将幂从零不断增加直到等于这个数。例如,因为45=3×5,45可以被3×5,3×5,3×5,3×

因子分解

完整的因子列表可以根据约数分解推导出,将幂从零不断增加直到等于这个数。例如,因为45= 3×5,45可以被3 ×5,3×5,3×5,3×5,3×5,和3×5,或者 1,5,3,9,15,和 45整除。相对应的,约数分解只包括约数因子。参见约数分解算法。

实际应用

给出两个大约数,很容易就能将它们两个相乘。但是,给出它们的乘积,找出它们的因子就显得不是那么容易了。这就是许多现代密码系统的关键所在。如果能够找到解决整数分解问题的快速方法,几个重要的密码系统将会被攻破,包括RSA公钥算法和Blum Blum Shub(英语:Blum Blum Shub)随机数发生器。

尽管快速分解是攻破这些系统的方法之一,仍然会有其它的不涉及到分解的其它方法。所以情形完全可能变成这样:整数分解问题仍然是非常困难,这些密码系统却是能够很快攻破。有的密码系统则能提供更强的保证:如果这些密码系统被快速破解(即能够以多项式时间复杂度破解),则可以利用破解这些系统的算法来快速地(以多项式时间复杂度)分解整数。换句话说,破解这样的密码系统不会比整数分解更容易。这样的密码系统包括Rabin密码系统(RSA的一个变体)以及Blum Blum Shub随机数发生器。

当今的新进展

2005年,作为公共研究一部分的有663个二进制数位之长的RSA-200已经被一种一般用途的方法所分解。

如果一个大的,有n个二进制数位长度的数是两个差不多大小相等的约数的乘积,现在还没有很好的算法来以多项式时间复杂度分解它。

这就意味着没有已知算法可以在O(n)(k为常数)的时间内分解它。但是现在的算法也是比Θ(e)快的。换句话说,现在我们已知最好的算法比指数数量级时间要快,比多项式数量级时间要慢。已知最好的渐近线运行时间是普通数域筛选法(GNFS)。时间是:

对于平常的计算机,GNFS是我们已知最好的对付n个二进制数位大约数的方法。不过,对于量子计算机,彼得·秀尔在1994年发现了一种可以用多项式时间来解决这个问题的算法。如果大的量子计算机建立起来,这将对密码学有很重要的意义。这个算法在时间上只需要O(n),空间只要O(n)就可以了。 构造出这样一个算法只需要2n量子位。2001年,第一个7量子位的量子计算机第一个运行这个算法,它分解的数是15。

难度与复杂度

现在还不确切知道整数分解属于哪个复杂度类。

我们知道这个问题的判定问题形式(“请问N是否有一个比M小的约数?”)是在与反之中。因为不管是答案为是或不是,我们都可以用一个素因数以及该素因数的素数证明来验证这个答案。由秀尔算法可知,这个问题在BQP中。大部分的人则怀疑这个问题不在P、完全、以及反完全这三个复杂性类别中。如果这个问题可以被证明为完全或反完全,则我们便可推得=反。这将会是个很震憾的结果,也因此大多数人猜想整数分解这个问题不在上述的复杂性类别中。也有许多人尝试去找出多项式时间的算法来解决这个问题,但是都尚未成功,因此这个问题也被多数人怀疑不在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)

二次筛选法(英语:Quadratic sieve)

理性筛选法(英语:Rational sieve)

普通数域筛选法

Shanks" square forms factorization(英语:Shanks" square forms factorization)(SQUFOF)

其他算法

秀尔算法

参见

素因数表


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 整数
正整数与负整数整数是一个集合,通常可以分为正整数、零(0)和负整数。正整数(符号:Z或Z+{\displaystyle\mathbb{Z}^{+}})即大于0的整数,是正数与整数的交集。而负整数(符号:Z或Z−−-->{\displaystyle\mathbb{Z}^{-}})即小于0的整负数是负数与整数的交集。和整数一样,两者都是无限集合限集合。除正整数和负整数外,通常将0与正整数统称为非负整数(符号:Z0或Z0+{\displaystyle\mathbb{Z}_{0}^{+}}),而将0与负整数统称为非正整数(符号:Z0或Z0−−-->{\displaystyle\mathbb{Z}_{0}^{-}数论)。在数论中自然数通常被视为与正整数等同,即1,2,3等,但在集合论和计算机科学中自然数则通常是指非负整数,即0,1,2等。代数性质下表给出任何整数a{\displaysty...
· 正整数
参见负整数
· QR分解
定义实数矩阵A的QR分解是把A分解为这里的Q是正交矩阵(意味着QQ=I)而R是上三角矩阵。类似的,我们可以定义A的QL,RQ和LQ分解。更一般的说,我们可以因数分解复数m{\displaystylem}×n{\displaystylen}矩阵(有着m≥n)为m{\displaystylem}×n{\displaystylen}酉矩阵(在QQ=I的意义上)和n{\displaystylen}×n{\displaystylen}上三角矩阵的乘积。如果A是非奇异的,且限定R的对角线元素为正,则这个因数分解是唯一的。QR分解的求法QR分解的实际计算有很多方法,例如Givens旋转、Householder变换,以及Gram-Schmidt正交化等等。每一种方法都有其优点和不足。Gram-Schmidt正交化使用Householder变换Householder变换将...
· 代数整数
定义以下是代数整数四种相互等价的定义。设K为代数数域(有理数域Q{\displaystyle\mathbb{Q}}的有限扩张)。根据本原元定理,K可以写成K=Q(θθ-->){\displaystyleK=\mathbb{Q}(\theta)}的形式。其中θθ-->∈∈-->C{\displaystyle\theta\in\mathbb{C}}是某个代数数。设有αα-->∈∈-->K{\displaystyle\alpha\inK},则α是代数整数当且仅当以下命题之一成立:存在整系数多项式:P=Xm+a1Xm−−-->1+⋯⋯-->+am−−-->1X+am∈∈-->Z[X]{\displaystyleP=X^{m}+a_{1}X^{m-1}+\cdots+a_{m-1}X+a_{m}\in\mathbb{Z}[X]},使得P(αα--...
· 整数分拆
拆分数量数列4可以用5种方法写成和式:4,3+1,2+2,2+1+1,1+1+1+1。因此p(4)=5{\displaystylep(4)=5}。定义p(0)=1{\displaystylep(0)=1},若n为负数则p(n)=0{\displaystylep(n)=0}。此函数应用于对称多项式及对称群的表示理论等。分割函数p(n),n从0开始:程式实现#includeusingnamespacestd;intmain(){constintlen=121;intnum[len+1]={1};for(inti=1;i<=len;++i)for(intj=i;j<=len;++j)num[j]+=num[j-i];for(inti=0;i<=len;i++)cout<<i<<""<<num[i]<<endl;return0;}F...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信