승1's B(log n)

[백준 - C++] 2581번: 소수 본문

Problem Solving

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

승1이 2022. 8. 15. 00:34

흔하디 흔한 소수 문제인 것 같지만 소수들의 합과 최솟값을 출력해야 한다는 점에서 기존 소수를 구하는 문제들과는 차이점이 있다고 할 수 있겠다.
나는 최솟값을 저장할 변수를 아주 큰 수로 초기화하고 소수인 수들을 이미 저장되어 있는 수와 비교함으로써 소수인 수가 더 작은 경우에는 저장하도록 설계했다.

#include <iostream>
using namespace std;

int main(void) {
    int N, M;
    cin >> N;
    cin >> M;
    int prime_min = 100000;
    int prime_sum = 0;
    for (int i = N; i <= M; i++)
    {
        int prime = 0;
        if(i == 1)
            prime = 1;
        else if(i == 2)
            prime = 0;
        else
        {
            for(int j = 2; j < i / 2 + 1; j++)
            {
                if(i % j == 0)
                {
                    prime = 1;
                    break;
                }
            }
        }
        if(prime == 0)
        {
            prime_sum += i;
            if(prime_min > i)
                prime_min = i;
        }
    }
    if(prime_sum == 0)
        cout << -1 << endl;
    else
    {
        cout << prime_sum << endl;
        cout << prime_min << endl;
    }
    return 0;
}

https://www.acmicpc.net/problem/2581

Comments