如何找到非常大的因素

时间:2014-09-08 13:47:21

标签: bignum factors

我需要找到非常大数量的因子(10 ^ 1000)。即如果输入为100则输出应为10 10因为(10 * 10 = 100)。如果N <=(长)的大小,这是非常简单但我想知道如何找到非常大数的因子说(10 ^ 1000)。我也不能使用Big Integer。 。

2 个答案:

答案 0 :(得分:1)

1)正如已经指出的那样,分解大数字很难。事实上,它很难成为RSA公钥加密的基础,或者换句话说,每当你在网上购买东西时,你都指望它很难分解订单的数量。 2 ^ 2048(给定2 ^ 10 = 1024,其为约10 ^ 3,2 ^ 2048约为10 ^ 600)。虽然RSA专门使用两个大质数,而你的随机N可能有很多小数字,这在一定程度上有所帮助,但我不会指望能够很快计算10 ^ 1000 +/-一些随机值。

2)你绝对可以使用字符串重新实现大数字库[来源:在我们学习如何进行大数学运算之前,我有一位同学做过这样的事情但是它会变得非常缓慢,而且你基本上都是每次都要把你的字符串重新注入整数;如果你想重新计算大数是一个稍微不那么痛苦的方法,那就是整数数组。你仍然需要做一些额外的步骤,但至少要做基本的数学运算,这并不是非常困难。 (但它仍然不会像专业的大数字库一样高效,它可以做出聪明的算法。例如,将2个大数字直接乘以A = P * 2 ^ 32 + Q(即A是一个64位数字,表示为2个32位数字的数组)和B = R * 2 ^ 32 + S ...直接的方式需要4个多方位加上一些加法加上一些处理进位)。随着大数字的大小增加,有一些方法(参见例如http://en.wikipedia.org/wiki/Karatsuba_algorithm)以减少所需的乘法数量)

3)(与试验分解相比,有一些算法可以更有效地计算数字因素,但是目前的算法仍无法帮助计算你在宇宙热死之前询问的数字)

答案 1 :(得分:-2)

10 ^ 1000正好有1,002,001个整数除数,它们应该很容易找到并且有点想法。主要因子分解是

2 * 2 * 2 * ... * 5 * 5 * 5

正好有1,000两个,正好是1,000个五。