【发布时间】:2021-01-20 06:43:50
【问题描述】:
代码对于 int 数据类型工作得很好,但 600851475143 似乎是一个太大的数字。我怎样才能让它工作?它一直在运行,从不给我答案。
public class Main {
public static void main(String[] args) {
long a = 600851475143L;
boolean prime = false;
long big = 0L;
for (long i = 1L; i < a; i++){
if (a % i == 0){
for (int j = 2; j < i/(float)2; j++){
if (i % j == 0){
prime = true;
break;
}
}
if(!prime){
big = i;
}
}
}
System.out.println(big);
}
}
【问题讨论】:
-
将此
if (i % 1000_000 == 0) System.out.println(i);放在for循环的顶部 -
break;也只是突破了当前的for并且prime没有被重置,它似乎什么也没做。 -
这是 Project Euler 问题 #3。如果您搜索它,您应该会找到一些帮助。
标签: java primes long-integer