Para un proyecto pequeño (Problema 10 Proyecto Euler) intenté resumir todos los números primos por debajo de 2 millones. Así que utilicé un método de fuerza bruta y repetí de 0 a 2'000'000 y verifiqué si el número es primo. Si es que he añadido a la suma:¿Por qué Java no me dice cuándo no puedo usar Integer?
private int sum = 0;
private void calculate() {
for (int i = 0; i < 2000000; i++) {
if (i.isPrime()) {
sum = sum + i;
}
}
sysout(sum)
}
El resultado de este cálculo es 1179908154, pero esto es incorrecto. Así que cambié int a BigInteger y ahora obtengo la suma correcta 142913828922. Obviamente, el rango de int se desbordó. Pero ¿por qué Java no puede decirme eso? (por ejemplo, por una excepción)
Como acotación al margen, BigInteger es un exceso y largo habría funcionado bien. – DJClayworth
¿Por qué no usas Tamiz de Eratóstenes en lugar de fuerza bruta? – CoolBeans
@DJClayworth: intentaré @CoolBeans: la fuerza bruta es lo suficientemente rápida, solo toma una fracción de segundo – RoflcoptrException