这得到了所有的主要因素的数字,但它继续进行,然后输出消极因素的数字,由于某种原因,帮助?链接到这里的问题:http://projecteuler.net/problem=3
public static void main(String[] args) {
long number = 600851475143l;
divChecker(number);
}
public static void divChecker(long n) {
int div = 2;
while (div * div < n) {
if (n % div == 0) {
primeChecker(div);
div++;
} else {
div++;
}
}
}
public static void primeChecker(long n) {
int div = 2;
while (div * div < n) {
if (n % div != 0) {
div++;
} else {
break;
}
}
if (n % div != 0) {
System.out.println(n);
}
}这里的产出:
71
839
1471
6857
-716151937
-408464633
-87625999
-10086647
-5753023
-1234169
-486847
-104441
-59569
-6857
-1471
-839
-71
-1
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Bucky.divChecker(Bucky.java:13)
at Bucky.main(Bucky.java:7)发布于 2014-06-24 18:26:12
您与int的乘数最终会溢出,从而产生“负面”因素。
将div变量声明为long而不是int。
long div = 2; // Two places in the code更改后,我只获得此输出,而Windows计算器验证它们的产品是否为您要考虑的原始编号,600851475143L
71
839
1471
6857https://stackoverflow.com/questions/24393670
复制相似问题