public class Three {
public static void main(String[] args) {
Three obj = new Three();
obj.function(600851475143);
}
private Long function(long i) {
Stack<Long> stack = new Stack<Long>();
for (long j = 2; j <= i; j++) {
if (i % j == 0) {
stack.push(j);
}
}
return stack.pop();
}
}
Cuando se ejecuta el código anterior, se produce un error en la línea obj.function(600851475143);
. ¿Por qué?"Número entero demasiado grande" mensaje de error para 600851475143
¿también hay diferencia entre "l" y "L"? – user446654
@ user446654: No, la hay. Este último es más legible. Lea "Java Puzzler" para esto. –
@ user446654: evolucionando @Thilo pensamientos sobre el posible límite de memoria excedente Quiero agregar mis 2 monedas: ha elegido un algoritmo realmente, muy malo para buscar todos los divisores de un número si desea operar con números tan grandes como en su ejemplo . Algo basado en * programación dinámica * funcionaría mejor probablemente. Google sobre eso para obtener más resultados. – Roman