【发布时间】:2020-03-27 15:46:30
【问题描述】:
我正在尝试解决 Project Euler 中的问题 3:
13195 的质因数是 5、7、13 和 29。
600851475143 的最大质因数是多少?
这是我的代码:
import java.util.ArrayList;
public class Test {
public static void main(String[] args){
long max = 600851475143L;
ArrayList<Long> primes = new ArrayList<>();
primes.add((long) 2);
boolean prime = true;
for (long i = 3; i <= max; i += 2){
for (long j = 3; j < Math.sqrt(i); j++){
if (i % j == 0){
prime = false;
break;
}
}
if (prime) primes.add(i);
else prime = true;
}
for (int i = primes.size() - 1; i >= 0; i--){
if (max % primes.get(i) == 0){
System.out.println(primes.get(i));
return;
}
}
}
}
代码没有输出任何东西,它只是给了我一个空白屏幕。请不要为我解决问题,请告诉我是什么错误导致它无法输出任何内容。
【问题讨论】:
-
程序是否停止运行?如果没有,那可能意味着生成素数的程序部分花费了太长时间。
-
@Nosrep 事实上,它永远不会停止。我没注意到。