正如您可以通過標題所告訴的那樣,我正試圖強制推導其因子爲2個素數的大整數的因式分解。我想知道是否有一種方法在for循環中使用for循環。我知道這是一個可怕的方式來做到這一點,但我想無論如何要這樣做。 (我打算使用fermats分解定理,但是無法使用一些額外的方法/庫,無法使用sqrt BigIntegers,所以我不能這麼做)所以試試看看你是否可以幫助我完成我正在做的事情。沿此線成才:蠻力BigInteger因子分解
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.nextpossible素,我只是向你展示了我想要它工作的方式;但這就是爲什麼我問,因爲idk如果這樣的事情甚至是可能的!
請讓我知道,如果這條路線是可能的,我怎麼可以修復這個不好的代碼來運作,就像我正在想象它!
謝謝!
蠻力分解是相同的算法,無論它應用於BigIntegers還是常規整數。你可以找到它的僞代碼,例如[這裏](http://stackoverflow.com/a/15292911/849891)或工作Java代碼[這裏](http://stackoverflow.com/a/12046123/849891)。 –