所以我最近一直在做一些 Project Euler,但由于某种原因,我的代码无法正常工作,因为 Java 一直在四舍五入我的 divsions。
public class Problem3 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double max = 0;
double n = 600851475431.;
for (double i = 2; i<Math.sqrt(n); i++){
if (600851475431.%i == 0){
if (isPrime (i) == true && i>max){
max = i;
}
}
}
System.out.print(max);
}
public static boolean isPrime(double a){
for (int i= 2; i<Math.sqrt(a); i++){
if (a%i == 0){
return false;
}
}
return true;
}
首先,600851475431%168887 不等于 0,但 Java 一直认为它确实如此。