该代码应该返回最大的质数。有关此任务的更多信息:https : //projecteuler.net/problem=3
int checkFactors(double na) { long n = (long) na; int biggestPrimeFactor = 0; for (int i = 1; i < n; i++) if (n % i == 0 && isPrimFaktor(i) && i > biggestPrimeFactor) biggestPrimeFactor = i; return biggestPrimeFactor; } boolean isPrimeFactor(int n) { int length= 0; for (int i = n; i > 0; i--) if (n % i == 0) length++; if (length== 2) return true; return false; }
我决定将checkFactors()的参数加倍,因为我试图测试为什么我的代码无法正常工作。
System.out.println(checkFactors(13195));
工作并返回“ 29”。
但是,System.out.println(checkFactors(600851475143)); 不起作用,
System.out.println(checkFactors(600851475143));
“ int类型的600851475143超出范围”。
System.out.println(checkFactors(600851475143.0));
确实可以编译,但是在几秒钟后给了我ArithmeticException。
600851475143 of type int is out of range
int
.0
double
checkFactors(600851475143d)