import java.math.BigInteger;
public class ProjectEuler {
public static void main(String[] args) {
BigInteger bi = new BigInteger("600851475143");
int div = 7;
while (bi.compareTo(new BigInteger("1")) != 0) {
while (bi.mod(new BigInteger(div + "")).compareTo(new BigInteger("0")) == 0) {
bi = bi.divide(new BigInteger(div + ""));
}
div += 2;
}
System.out.println("" + div);
}
}
"의 기본 문제 중 하나를 살펴 보았습니다. 숫자 600851475143은"의 가장 큰 소수 요소는 무엇입니까? 이 솔루션이 다르다는 것을 알았습니다.이 작동 방식에 대해 몇 가지 질문이 있습니다.BigInteger에 대한 질문이 있으십니까?
- 첫 번째 조건은 숫자가 1인지 여부를 확인합니다. 거기에서 나는 나머지 코드를 이해할 수 없다.
new BigInteger(div +"")
. 왜 우리는 여기에 + ""를 연결합니까?
아마도 저자는 그 숫자가 2도 3도 5도 나눌 수 없다는 것을 알아 냈을 것입니다. 그것은 로켓 과학이 아닙니다. –
@LuiggiMendoza : 2 초 내에 2 개의 부정적인 표현 ... – Kevin
"거기에서 나머지 코드를 이해할 수 없습니다." - [BigInteger' javadocs] (http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html)에 문의 해 보았습니까? 그렇다면 이해할 수없는 * 특정 * 항목이 있습니까? – millimoose