Proyecto Euler # 3 fuera del rango entero java [duplicado]
Esta pregunta ya tiene una respuesta aquí:
El literal xyz de tipo int está fuera de rango 5 respuestasSe supone que el código devolverá el mayor número primo. Más sobre la tarea aquí:https: //projecteuler.net/problem=
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;
}
Decidí duplicar el parámetro de checkFactors () porque intenté probar por qué mi código no funcionaba correctamente.
System.out.println(checkFactors(13195));
works y devuelve "29".
Sin embargo,System.out.println(checkFactors(600851475143));
No funciona
"600851475143 de tipo int está fuera de rango".
System.out.println(checkFactors(600851475143.0));
compila, pero después de un par de segundos me da una ArithmeticException.