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 的最大素数”这个基本但著名的问题之一。我发现这个解决方案不同,我有几个关于它是如何工作的问题。
- 第一个条件检查数字是否等于 1。从那里我无法理解其余的代码。
new BigInteger(div +"")
. 为什么我们在这里连接+“”?