백준 소수 C++

박원빈·2024년 4월 26일

알고리즘 🤔

목록 보기
9/26
post-thumbnail


소스코드 + 풀이

#include <iostream>
using namespace std;

int main() {
    int M, N;
    cin >> M >> N;
    // 소수의 합을 저장하는 변수
    int acc = 0;
    // 소수의 최소값을 저장하는 변수
    int min = 0;
    // 소수인지 아닌지 판별헤주는 변수
    bool isPrime = true;
    
    for (int i = M; i <= N; i++) {
        // for문으로 소수인지 판별하기
        for (int j = 2; j < i; j++) {
            // 소수라면 소수를 판별해주는 변수 변경
            if (i % j == 0) {
                isPrime = false;
                break;
            }
        }
        // 1은 소수가 아니므로 1 제외
        if (isPrime && i != 1) {
            acc += i;
            // 최소값이 없을때만 바꿔줌
            if (!min) {
                min = i;
            }
        } else {
            // 소수 판별 변수 초기화
            isPrime = true;
        }
    }
    
    if (acc) {
        cout << acc << "\n" << min;
    } else {
        cout << "-1";
    }
    
}

추가적으로 소수 판별법에 대한 여러가지 방법이 있다는것을 알았다.
에라토스테네스의 체, 밀러-라빈 판정법...
후에 빠른 소수 판별법같은 문제를 풀 기회가 되면 활용해야겠다.

0개의 댓글