알고리즘/백준

백준_1929 : 소수 구하기 - C++

맏리믓 2023. 5. 27. 05:06

문제


문제 해석

- 주어진 숫자 사이에 존재 하는 소수를 구하여 출력 하면 되는 문제이다.


알고리즘

- 주어진 범위의 모든 수num 을 2부터 num 의 제곱 근 까지 나누어 보면서 하나라도 나누어 지는 수가 있다면 소수가 아니다.

- 그렇지 않으면 소수이기 때문에 출력 하면 된다.

- 이때 num 의 제곱근까지만 나누어 보는 이유는 제곱근 보다 큰 수는 결국 제곱근 보다 작은수와 곱해서 num 을 만들기 떄문이다.

- 즉 제곱근 보다 작은 수로도 나누어 지지 않았다면 제곱근 보다 큰 수로도 나누어 지지 않는다.


코드

#include <iostream>
using namespace std;

bool CheckPrime(int num){
    bool result = true;
    if(num == 1){
        result = false;
    }
    for(int i = 2; i*i <= num; i++){
        if(num % i == 0){
            result = false;
            break;
        }
    }
    return result;
}

int M, N;
int main(){
    cin >> M >> N;
    for(int i = M; i <= N; i++){
        if(CheckPrime(i)){
            cout << i << '\n';
        }
    }
    return 0;
}