百科问答小站 logo
百科问答小站 font logo



求一个整数的所有素数因子的思路是什么? 第1页

  

user avatar   nayilus 网友的相关建议: 
      
  1. 一般的小数可以用简单筛法找出质数列表,然后一个个试。这种方法简单暴力,但是对几亿以下的数字可以很快。

2. 再大一点的数 就用Pollard的 算法,思路:

任取一个数 开始,不断计算 ,则如果 有质因数 ,那么 应该能更快地进入循环,可以用龟兔赛跑算法(图形状像 ,因此算法得名)试图找出这个循环点,一旦找到 ,立刻可以算 和 的最大公约数得到分解。有一定几率失败。

3. 更大的但在 以下的 可以用Lenstra椭圆曲线算法(ECM),思路:

挑选椭圆曲线 外加上面某一点 ,然后取一个较小的阶乘 ,反复用椭圆曲线加法算出 ,在重复计算加法中每一步都会计算和曲线切线斜率 同余的整数,即找出整数 使得 ,方法为找 和 的最大公约数,在这个过程中如果得出公约数大于1则分解成立,有一定几率失败。

4. 更大的 以下的 可以用二次筛(QS),思路

费尔马分解法试图把奇数 写成 的方法,这样立刻可得因数分解 ,二次筛就是一种可以高效找到此类数字的方法,试图测试多个介于 和 之间的数 ,如果 正好是完全平方那就成了,不然找到几个不同的 ,如果乘积正好是完全平方数,那么 满足条件。

5. 再往上只能用普通数域筛选法(GNFS),这个就很复杂了,思路

也是用费尔马分解法,只是比二次筛更高效,核心定理:

取系数为整数的 次多项式 有复根 ,并存在不是 倍数的整数 ,使得 为 倍数,将所有次数不超过 的整系数多项式代入后的值定义为一个“环”(因为任何两个这样形式的数的和或积依然是这样形式的数),那么必然存在一个将这个环里的复数映射到不是 倍数的整数上的函数 满足:

i -

ii -

iii -

iv -

已知这个定理后,如果找到整数对 使得复数 ,整数 ,以及 的映像 ,则很容易根据i-iv得到 ,有2/3机会能由此找到 的一个约数。

2009年,232位的RSA-768数通过上百台计算机耗时两年成功分解,用的就是高度优化后的GNFS。




  

相关话题

  如何评价复旦大学郭坤宇教授的工作? 
  1³+2³+3³+......+n³=多少? 
  数学中有哪些看起来很不可思议的知识? 
  如何简洁地证明二次互反律?有哪些具体应用? 
  用三个汉字能描述的最大的数是多少? 
  算盘的计算速度有多快? 
  掷一枚不均匀的硬币,正面概率为0.7,反面的概率为0.3,如何最高效地获得一个概率为0.5的事件? 
  一般密码10个数字和26个字母组合如果我或有关重要部门造了50新字母,黑客键盘上没有这些字母如何破解? 
  一道数列题竞赛的感jio,但明明白白出现在考卷上,请问咋做? 
  有没有反三角函数的「和差角公式」? 

前一个讨论
对大多数人来说数学无用,但要高考,不想学数学,怎么克服这种心理?
下一个讨论
有没有一些有意思的悖论,没意思也行,但要是悖论?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利