【发布时间】:2013-04-15 01:51:05
【问题描述】:
正如标题所示,我正在努力尝试强制分解因数为 2 个素数的大整数。我想知道是否有办法在 for 循环中使用 for 循环。我知道这是一种可怕的方法,但我还是想这样做。 (我打算使用 fermats 因式分解定理,但是如果没有一些额外的方法/库,你就不能 sqrt BigIntegers,我不能这样做)所以试着看看你是否可以帮助我做我正在做的事情。大致是这样的:
BigInteger n = new BigInteger("270653957405596110781"); // this is what i need the factors of
BigInteger TWO = new BigInteger("2");
for( BigInteger i = new BigInteger("1"); i < n.divide(TWO); i.nextProbablePrime() ){
for( BigInteger k = new BigInteger("1"); k < n.divide(TWO); k.nextPossiblePrime){
if(i.Multiply(k) = n){
//i and k are the factors, and return them
}
}
}
显然那太糟糕了,我知道你不能通过说 i.nextPossiblePrime() 来增加下一个素数,你需要它说 i = i.nextpossible prime,我只是向你展示了我想要的那种它工作;但这就是我问的原因,因为我想知道这样的事情是否可能!
请让我知道这条路线是否可行,以及如何修复这个糟糕的代码,让它像我想象的那样运行!
谢谢!
【问题讨论】:
标签: java primes biginteger brute-force factorization