Problema:
El primo 41, se puede escribir como la suma de seis primos consecutivos:
41 = 2 + 3 + 5 + 7 + 11 + 13 Esta es la suma más larga de primos consecutivos que se suma a un primo por debajo de cien. ¿Qué primo, por debajo de un millón, se puede escribir como la suma de los primos más consecutivos?
El programa funciona con el número cien pero con un millón no es así, ¿qué podría hacer, o en donde esta el fallo?
Código
public static void main(String[] args) {
System.out.println(primeSum(numbersPrimes(100)));
}
public static Vector primeSum(Vector vector){
int suma = 0;
Vector list = new Vector();
for (int i = 0; i < vector.size(); i++) {
suma = suma + (int) vector.get(i);
if (isPrime(suma) & suma<100) {
list.add(suma);
} else {
}
}
return (list);
}
public static Vector numbersPrimes(int num){
Vector primes = new Vector(num);
for (int i = 2; i < num; i++) {
if(isPrime(i)){
primes.add(i);
}
}
return (primes);
}
public static boolean isPrime(int num){
for (int i = 2; i < num; i++) {
if(num % i == 0)
return false;
}
return true;
}