问题描述:
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); } }