该代码应该返回最大的素数。更多关于这里的任务: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));
不起作用,
“600851475143 int 类型超出范围”。
System.out.println(checkFactors(600851475143.0));
确实编译但几秒钟后给了我一个算术异常。