
이 문제를 보고 M과 N의 사이의 수들을 하나씩 돌면서 이 수가 소수인지 아닌지 알아내면서 풀자고 생각했다. 그래서 완전탐색 방법으로 풀고 예제까지 잘 출력이 되어서 제출하였는데 틀렸다고 나왔다...!
그래서 다시 생각해보니까 내가 1이나 2에 대한 예외처리를 안해줘서 틀린거였다.
#include <iostream>
using namespace std;
int main(void){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,m;
int sum = 0;
int min = 0;
cin>>n>>m;
while (1)
{
if(n > m) break;
if(n == 1){
n++;
continue;
}
if(n == 2){
sum += 2;
min = 2;
n++;
continue;
}
bool prime_number = false;
for(int i = 2;i<n;i++){
if(n%i == 0){
prime_number = true;
break;
}
}
if(!prime_number){
sum += n;
if(min == 0)min = n;
}
n++;
}
if(sum == 0)cout<<-1<<'\n';
else{
cout<<sum<<'\n'<<min<<'\n';
}
}
n을 m보다 커지기 전까지 1씩 늘려가면서 체크했다. n이 1인 경우에는 1만 더해주고 continue 해주었고,
2인 경우에는 소수이기 때문에 sum값과 min값을 바꿔주고 continue로 계속 진행하였다.
그리고 제출하였더니 정답..!!
문제를 풀 때 사소한것들에 좀 더 신경을 써야겠다.