-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProblem50.cpp
More file actions
60 lines (55 loc) · 1.06 KB
/
Problem50.cpp
File metadata and controls
60 lines (55 loc) · 1.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
Krishna Mohan
Project Euler - Problem 50
Date: 3/24/2015
*/
#include <bits/stdc++.h>
using namespace std;
#define fo(i, n) for(int (i)=0;(i)<(n); (i)++)
#define MAX 1000001
#define pb push_back
bitset<MAX> isPrime;
vector<int> primes;
void init()
{
isPrime.set();
isPrime[0]=isPrime[1]=0;
for(int i=4;i<MAX;i+=2)
isPrime[i]=0;
primes.pb(2);
for(int i=3;i<MAX;i++)
{
if(isPrime[i])
{
primes.pb(i);
for(int j=2*i;j<MAX;j+=i)
{
isPrime[j]=0;
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
init();
int sum=0, max=0, cnt, maxSum, sz=primes.size();
for(int i=0;i<sz;i++)
{
sum=0, cnt=0;
for(int j=i;j<sz;j++)
{
sum+=primes[j];
cnt++;
if(sum>=MAX)
break;
if(isPrime[sum] && cnt>max)
{
max=cnt;
maxSum=sum;
}
}
}
cout<<"Ans: "<<max<<", "<<maxSum<<endl;
return 0;
}