BOJ - 2581 소수 (C++)

2023. 2. 9. 20:56·백준

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

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

어떻게 풀 것인가?

처음에는 소수를 판별하는 함수(2부터 n보다 작은 수로 나눠서 나머지가 0인게 중간에 있다면 소수O)

를 사용하여 풀려고 했다.

하지만, 이 방식을 사용하게 된다면 시간초과가 뜰 가능성이 매우 높다.

'에라토스테네스의 체'를 사용하여 문제를 풀 수도 있었지만,

for문의 사용을 최대한 줄여서, 연산시간을 최대한 줄일려고 노력했다.


소스 코드

#include <iostream>

using namespace std;

int check_primeNum(int n);

int main(void) {
    int M; //min
    int N; //max
    int sum = 0; //합
    int min = -1;
    int k = 0;

    cin >> M;
    cin >> N;

    for (int i = M; i <= N; i++) {
        if (check_primeNum(i) == 1) {
            if (k == 0) { // 처음 한번만 실행가능 하다(최소의 소수 값)
                min = i; //가장 작은 소수
                k = 1;
            }
            sum = sum + i; //sum에 소수를 계속 누적한다.
        }
    }

    if (sum == 0) { // 소수가 없으면
        cout << min << endl;
    } else {
        cout << sum << endl;
        cout << min << endl;
    }
}

/*소수 판별 함수*/
int check_primeNum(int n) {
    if(n == 1) //1은 소수가 아님
        return 0;
    for (int i = 2; i < n; i++) {
        if (n % i == 0)
            return 0; //소수 아님
    }
    return 1; //소수임
}

시간 복잡도

이중 for문이 사용되었기 때문에,

O(n^2)

이라고 볼 수 있다.


'에라토스테네스의 체'를 공부하자

'백준' 카테고리의 다른 글

BOJ - 10989 (C++)  (0) 2023.02.16
BOJ - 3003(C++)  (0) 2022.12.30
BOJ - 1008(C++)  (0) 2022.12.27
'백준' 카테고리의 다른 글
  • BOJ - 10989 (C++)
  • BOJ - 3003(C++)
  • BOJ - 1008(C++)
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    앤드류모튼
    동적메모리
    커널 기여
    Git
    arm
    드라이버 분석
    c언어
    Qualcomm
    파일 입출력
    피보나치
    rubik pi
    소수
    파이썬
    토발즈
    버퍼
    백준
    yolo
    포인터
    rubikpi3
    C++
    스택
    자료구조
    Branch
    시스템콜
    commit
    순환
    INIT
    이진 트리
    리눅스
    커널
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
BOJ - 2581 소수 (C++)
상단으로

티스토리툴바