一种分解大奇数的方法技术

技术编号:14491078 阅读:42 留言:0更新日期:2017-01-29 13:52
一种分解大奇数的方法,其特征在于采用二叉树的方式选取被除数范围,将被除数范围内的二叉树分解成子二叉树,分配给多台计算机或计算单元进行并行计算,来获得该大整数的因数。本发明专利技术与已有技术相比,具有易于缩小搜索范围、加快大整数分解的优点。

【技术实现步骤摘要】

本专利技术涉及一种数的分解方法。
技术介绍
大整数,理论上即使采用世界上最快的计算机进行分解,也需要以年为单位的时间,因此,大整数广泛地应用到加密领域中,而获得一个大整数的全部分解因数则是建立密钥的关键。而现今,大整数的分解至今是一个世界难题。人类一直在不停地寻找有效解决该问题的方法,但至今尚无明显成效。
技术实现思路
本专利技术的专利技术目的在于提供一种能加快大奇数分解的方法。本专利技术是这样实现的,首先,先将大整数分解成大奇数m,如果大整数是大奇数m,则直接进入大奇数m的分解.大奇数m的分解是这样实现的,先确定大奇数m在二叉树T中的位置,二叉树T是从最顶端的结点3开始,依据奇数由小到大,由上到下,由左到右分布在二叉树T上,即3为二叉树T最顶的结点,亦即根结点,3往下分成二叉,左叉是5,右叉是7;5和7分别向下分成二叉,5和7成为向下分成二叉的子根结点,5的左叉是9,右叉是11,7的左叉是13,右叉是15,这样一直分叉下去,从而形成二叉树T。二叉树T从最顶的3开始,从上往下形成多层结点层L,0≤L;每层有2L个奇数(如0层是20=1,1层是21=2,2层是22=4….),第L层的第P个数的大小是:2×2L+1+2×(P-1),1≤P≤2L,大奇数m在二叉树T中的层数是K=-1,然后,用二叉树T中取整的K/2层及其以上层数中的奇数除大奇数m,若不能除尽,则该大奇数是素数;若有一个数能除尽,则该奇数是大奇数m的一个因数,相除运算采用多台计算机或计算单元同时进行,即将二叉树T中K/2层及其以上层数中的奇数划分成数个子二叉树Tn,具体是:先确定子二叉树Tn的层高h0,0≤h0,依据层高h0将二叉树T之K/2层及其以上层的全部奇数分成数层子二叉树树组;每层子二叉树树组由D个子二叉树Tn组成,D=2(S×(h0+1)),0≤S;下层每个子二叉树树组最顶端的结点是上层子二叉树树组中子二叉树底层结点的其中结点,然后,将数个子二叉树Tn有机地分配(如平均分配)给数台计算机或计算单元同时进行大奇数m与子二叉树Tn中的奇数进行相除,以获得大奇数m的因数,每个子二叉树由一台计算机或计算单元负责计算。由于大奇数的因数一定是奇数,而且,由于大于大奇数m必含有二叉树T中K/2层及其以上层的因数,因此大奇数m与二叉树T中K/2及其以上层数中的奇数相除,必能获得该大奇数m的因数。理论依据如下:二叉树T中每个节点的奇数A,该节点奇数A的左叉奇数是2×A-1,右叉奇数是2×A-1,如3的左叉奇数是2×3-1=5,右叉奇数是2×3-1=7,那么L层中左边第一个奇数的数值是:2×……(2×(2×(2×3-1)-1)-1)……-1=2×2L+1,0≤L,L层中右边第一个奇数的数值是:2×……(2×(2×(2×3+1)+1)+1)……+1=4×2L-1,0≤L,L/2层中右边第一个奇数的数值是:4×2L/2-1,0≤L,L/2+1层中左边第一个奇数的数值是:2×2(L/2+1)+1,0≤L,(4×2L/2-1)×(2×2(L/2+1)+1)=8×2(L+1)-1>4×2L-1,即使考虑L/2不是整数而取整的情况下,(4×2[L/2]-1)×(2×2([L/2]+1)+1)=8×2L-1>4×2L-1,由于大奇数的因数一定是奇数,因此,大奇数m与二叉树T中K/2层及其以上层数中的奇数相除,就能获得该大奇数m的所有因数。与现有技术相比,本专利技术的有益效果为:(1)由于利用二叉树的特性,有效地缩少了大奇数因子的搜索范围,从而有效地提升了大整数分解的速度。(2)将二叉树分解成数个子二叉树并使用多台计算机或计算单元同时并行计算,有利于资源的有效分配并充分利用计算机资源,从而极大地加快了大整数分解的速度。(3)采用二叉树的方法,能够揭示奇数的许多以前未能发现的性质如对称性等。利用此类性质设计算法,可减少大量的运算量。附图说明图1为二叉树的结构示意图;图2为二叉树分解为子二叉树的结构示意图。具体实施方式:现结合附图和实施例对本专利技术做进一步详细描述:本专利技术是这样实现的,首先,先将大整数分解成大奇数m,如果大整数是大奇数m,则直接进入大奇数m的分解,大奇数m的分解是这样实现的,先确定大奇数m在二叉树T中的位置,二叉树T是从最顶端的结点3开始,依据奇数由小到大,由上到下,由左到右分布在二叉树T上,即3为二叉树T最顶的结点,3往下分成二叉,左叉是5,右叉是7,5和7分别向下分成二叉,5和7成为向下分成二叉的根结点,5的左叉是9,右叉是11,7的左叉是13,右叉是15,这样一直分叉下去,从而形成二叉树T(如图1所示),二叉树T从最顶的3开始,从上往下形成多层结点层L,0≤L,每层有2L个奇数(如0层是20=1,1层是21=2,2层是22=4….),第L层的第P个数的大小是:2×2L+1+2×(P-1),1≤P≤2L,大奇数m在二叉树T中的层数是K=-1(如m为501时,K=7),然后,将大奇数m与二叉树T中取整的K/2层及其以上层数中的奇数(如K为200时,K/2=100.K为201时,K/2=100,K/2以上层数即0层—200层)进行相除,若某个奇数能除尽,则该奇数是大奇数m的因数。相除运算采用多台计算机同时进行,即将二叉树T中K/2层及其以上层数中的奇数分成数个层的子二叉树Tn。具体是:先确定子二叉树Tn的的层高h0,0≤h0,依据层高h0将二叉树T分成数层子二叉树树组,每层子二叉树树组由D个子二叉树Tn组成,D=2(S×(h0+1)),0≤S,S为子二叉树树组层,最上面子二叉树树组层是0,然后由上往下依次是1、2、……..,下层子二叉树树组中的子二叉树Tn最顶端的结点是上层子二叉树树组中的子二叉树Tn底部结点的其中一个叉。如图2所示,最上面子二叉树树组层是0,该层只有一个子二叉树树T1,子二叉树T1高度是3(包括有0层、1层、2层、3层),子二叉树T1底部结点有8个(如图1所示,分别为17、19、21、23、25、27、29、31),子二叉树T1底部8个结点有16支树杈(如图1所示,分别为33、35、37、39、41、43、45、47、49、51、53、55、57、59、61、63),这样,子二叉树树组层0下面的子二叉树树组层1就有16个子二叉树(如图2所示,分别是T2、T3、T4、T5、T6、T7、T8、T9、T10、T11、T12、T13、T14、T15、T16、T17),而子二叉树树组层1下面的子二叉树树组层2就有D=2(2×(3+1))256个高度为3的子二叉树Tn(n=18、19、……….273),以此类推,将K层以上的二叉树分成数个高度为h0=3的子二叉树Tn,然后,将数个子二叉树Tn有机地分配(如平均分配)给数台计算机或计算单元同时进行大奇数m与子二叉树Tn中的奇数进行相除,以获得大奇数m的因数。本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610820083.html" title="一种分解大奇数的方法原文来自X技术">分解大奇数的方法</a>

【技术保护点】
一种分解大奇数的方法,其特征在于首先,先将大整数分解成大奇数m,如果大整数是大奇数m,则直接进入大奇数m的分解,大奇数m的分解是这样实现的,先确定大奇数m在二叉树T中的位置,二叉树T是从最顶端的结点3开始,依据奇数由小到大,由上到下,由左到右分布在二叉树T上,即3为二叉树T最顶的结点,3往下分成二叉,左叉是5,右叉是7,5和7分别向下分成二叉,5和7成为向下分成二叉的根结点,5的左叉是9,右叉是11,7的左叉是13,右叉是15,这样一直分叉下去,从而形成二叉树T,二叉树T从最顶的3开始,从上往下形成多层结点层L,0≤L,每层有2L个奇数,第L层的第P个数的大小是:2×2L+1+2×(P‑1),1≤P ≤2L,大奇数m在二叉树T中的层数是K=‑1,然后,将大奇数m与二叉树T中取整的K/2层及其以上层数中的奇数进行相除,若不能除尽m,则该大奇数m是素数,若能除尽,则该数奇数是大奇数m的因数.相除运算采用多台计算机或计算单元同时进行,即将二叉树T中K/2层及其以上层数中的奇数分成原二叉树T的数个子二叉树Tn,具体是:先确定子二叉树Tn的的层高h0,0≤h0,依据层高h0将二叉树T之K/2层及其以上层的全部奇数分成数层子二叉树树组,每层子二叉树树组由D个子二叉树Tn组成,D=2(S×(h0+1)),0≤S,下层子二叉树树组中的子二叉树Tn最顶端的结点是上层子二叉树树组中的子二叉树Tn底部结点的其中一个,然后,将数个子二叉树Tn有机地分配给数台计算机或计算单元同时进行大奇数m与子二叉树Tn中的奇数进行相除,以获得大奇数m的因数。...

【技术特征摘要】
1.一种分解大奇数的方法,其特征在于首先,先将大整数分解成大奇数m,如果大整数是大奇数m,则直接进入大奇数m的分解,大奇数m的分解是这样实现的,先确定大奇数m在二叉树T中的位置,二叉树T是从最顶端的结点3开始,依据奇数由小到大,由上到下,由左到右分布在二叉树T上,即3为二叉树T最顶的结点,3往下分成二叉,左叉是5,右叉是7,5和7分别向下分成二叉,5和7成为向下分成二叉的根结点,5的左叉是9,右叉是11,7的左叉是13,右叉是15,这样一直分叉下去,从而形成二叉树T,二叉树T从最顶的3开始,从上往下形成多层结点层L,0≤L,每层有2L个奇数,第L层的第P个数的大小是:2×2L+1+2×(P-1),1≤P≤2L,大奇数m在二叉树T中的层数是K=-1,然后,将大奇数m...

【专利技术属性】
技术研发人员:王兴波
申请(专利权)人:佛山科学技术学院
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1