1644번. 소수의 연속합.

phoenixKim·2022년 9월 5일
0

백준 알고리즘

목록 보기
107/174
#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
	


}
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보