[C++] 백준 2581번 : 소수

wldud·2024년 11월 24일
0

알고리즘

목록 보기
28/34

문제

접근방식

이 문제를 보고 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로 계속 진행하였다.
그리고 제출하였더니 정답..!!
문제를 풀 때 사소한것들에 좀 더 신경을 써야겠다.

0개의 댓글