问题描述:
The prime 41, can be written as the sum of six consecutive primes:
41 = 2 + 3 + 5 + 7 + 11 + 13
This is the longest sum of consecutive primes that adds to a prime below one-hundred.
The longest sum of consecutive primes below one-thousand that adds to a prime, contains 21 terms, and is equal to 953.
Which prime, below one-million, can be written as the sum of the most consecutive primes?
解决问题:
package projecteuler;
import java.util.Arrays;
public class Problem50 {
public static boolean[] prime = new boolean[1000000];
public static boolean IsPrime(long number) {
for (int i = 2; i * i <= number; i++) {
if (number % i == 0)
return false;
}
return true;
}
public static void main(String[] args) {
Arrays.fill(prime, false);
int[] elements = new int[1000000];
Arrays.fill(elements, 0);
int index = 0;
for (int i = 2; i < 1000000; i++) {
if (IsPrime(i)) {
prime[i] = true;
elements[index] = i;
index++;
}
}
int len = 0;
int sum = 0;
int max = 0;
for (int i = 0; i < index; i++) {
sum = 0;
for(int j =i; j<index; j++){
sum += elements[j];
if (sum > 1000000) {
break;
}
if (sum<1000000&&prime[sum]) {
if (len < j-i) {
len = j-i;
max = sum;
// System.out.println("I:"+i+",J:"+j+",Sum:"+sum);
}
}
}
}
System.out.println("Max:"+max);
}
}