Problem
Problem URL : 소수의 합
[1] Answer Code (18. 09. 26)
#include <vector>
using namespace std;
vector<int> v;
void primeNumber(int n){
vector<long long> chk(n+1, 0);
for(long long i=2; i<=n; i++){
if(chk[i] == 1) continue;
chk[i] = 1;
v.push_back(i);
for(long long j=i*2; j<=n; j+=i){
chk[j] = 1;
}
}
}
long long solution(int N) {
long long answer = 0;
primeNumber(N);
for(int i=0; i<v.size(); i++){
answer += v[i];
}
return answer;
}
Review
-
n의 범위가 2이상 10,000,000이하 이다.
-
그래서 배열로 arr[10000001]로 선언하면 안된다.
-
그 대신 동적으로 사이즈를 잡아주는 vector
chk(n+1, 0); 식으로 선언을 하여서 해결했다.