[백준] 1929번 소수 구하기 C++ 문제 풀이 수학 2

2020. 2. 18. 12:24알고리즘/백준

728x90
반응형

문제

M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000)

출력

한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다.


예제 입력 1

3 16


예제 출력 1

3

5

7

11

13


문제 풀이

#include <iostream>
#include <cmath>

using namespace std;

int main() {
  int M, N, root;
  cin>>M>>N;
  for(int i=M; i<=N; i++){
    root = sqrt(i);
    if(root == 1 && i != 1){
      cout<<i<<'\n';
      continue;
    }
    if(i%2){      
      for(int j=2; j<=root; j++){
        if(!(i%j))
          break;
        if(j == root){
          cout<<i<<'\n';
        }
      }
    }
  }
}

이것도 이전 문제와 달리질 게 많이 없습니다.

소수의 합과 최솟값을 출력하던 것을 소수일 시에 출력하도록 수정하여 제출하면 정답이 됩니다.

 

출처 : https://www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000)

www.acmicpc.net

 

728x90
반응형