공부/백준

1929번: 소수 구하기(백준 C++)

상연 2020. 10. 15. 17:26

목차

    1929번: 소수 구하기 링크

    코드

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    int judge_prime(int n){
      if(n == 1) return 0;
      for(int i=2; i <= sqrt(n); i++){
        if(n%i == 0) return 0;
      }
      return 1;
    }
    
    int main(){
      int n1, n2;
      bool arr[1000001] = {0,}; // 0이 소수, 1은 not 소수
      cin >> n1 >> n2;
    
      for(int i=n1; i <=n2; i++){
        if(arr[i] == 1) continue;
    
        if(judge_prime(i)){
          cout << i << "\n";
          for(int j=1; i*j<=1000000; j++ ){
            arr[i*j] = 1;
          }
        }
    
      }
    }

    사견

    특별히 할 말이 없는 문제이다.
    이전에 몇 번 풀었던 소수 문제이기 때문.
    에라토스테네스의 체를 활용하여 풀면 되는 간단한 문제이다.

    2581번: 소수 문제풀이
    이전에 내가 풀었던 이 포스팅을 보면 이해에 조금 도움이 될 수 있다.

    에라토스테네스의 체 위키백과