/* 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? */ #include <iostream> #include <vector> using namespace std; bool isPrime(int n) { if (n==1) return false; for(int i=2; i * i <= n; i+=1) { if (n % i == 0) return false; } return true; } int main() { vector<int> prime; unsigned long sum = 0; unsigned long result = 0; unsigned long max_result = 0; int len = 0; int max_len = 0; for (int n=1; n<=1000000; n++) { if (isPrime(n)) { prime.push_back(n); } } for (size_t j=0; j<prime.size(); j++) { sum = 0; len = 0; for (size_t i=j; i<prime.size(); i++) { //cout << prime[i] << " + "; sum += prime[i]; if( sum > 1000 ) { len = i-j; break; } if (isPrime(sum)) { result = sum; } } if (result > max_result) { max_result = result; if (len > max_len) { } max_len = len; } } cout << " = " << max_result << endl; }