#include <iostream>
using namespace std;
// 1644번. 소수의 연속합.
// 14:03 ~ 14:32 중단
int dp[4000000];
int v[4000000];
int main(void)
{
//int n;
//cin >> n;
// 2 3 4 5 6 7 8 9 10 11 12 13 14
// 2 3 5 7 11 13
// dp[0] = 0
// dp[1] = dp[0] + v[0] : 2
// dp[2] = dp[0] + v[1] : 2 + 3
// dp[3] = dp[2] + v[2] : 5 + 7
// 400만까지 이므로, 400만 이하까지 진행하자.
// 400,0000
// 소수란 1과 자기 자신으로 나누는 것말고도 다른 것으로
// 나머지 구했을 때, 0이 하나라도 나오면 소수임
int cnt = 0;
for (int i = 2; i < 4000000; ++i)
{
bool check = false;
// 7 을 한다고 하면
// 2부터 ~ 6까지 진행해야 함.
for (int j = 2; j < i; ++j)
{
if (i % j == 0)
{
check = true;
break;
}
}
if (check == false)
{
v[cnt] = i;
dp[cnt + 1] = dp[cnt] + v[cnt];
cout << "cnt의 값은 " << cnt << endl;
cout << "소수 : " << v[cnt] << endl;
cout << "dp값 : " << dp[cnt] << endl;
if (dp[cnt] >= 4000000)
return 0;
++cnt;
}
}
// 연속된 수들의 합이므로,
// v[0] = 2
// v[1] = 3
// v[2] = 5
// v[3] = 7
// v[4] = 11
}