제목으로 알 수 있듯이 나는 인자가 2 소수 인 큰 정수의 인수 분해를 무력화하려고 노력하고 있습니다. for 루프를 for 루프 안에 사용하는 방법이 있는지 궁금합니다. 나는 이것이 이것을하기위한 끔찍한 방법이라는 것을 알고 있지만 어쨌든 그것을하고 싶습니다. (나는 fermats factorization theorem을 사용할 것이지만 sqrt BigIntegers를 약간의 추가 방법/라이브러리없이 사용할 수는 없다. 그래서 나는 그것을 할 수 없다.) 그래서 내가하고있는 것을 도와 줄 수 있는지 알아 보자. 이 라인을 따라가 someting :brute force BigInteger Factorization
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 때문에 이런 일이 가능할지 물어 보는 이유입니다!
이 경로가 가능하고 내가 시각화하는 것처럼이 나쁜 코드를 어떻게 해결할 수 있는지 알려 주시기 바랍니다!
감사합니다.
무차별 인수 분해는 BigInteger 또는 일반 정수에 적용되는지 여부와 동일한 알고리즘입니다. 예를 들어 가상 코드를 찾을 수 있습니다. [here] (http://stackoverflow.com/a/15292911/849891) 또는 작업중인 Java 코드 [here] (http://stackoverflow.com/a/12046123/849891). –