안경말이

[1978 c++] 백준 1978번 소수 찾기 본문

Coding Test/Baekjoon

[1978 c++] 백준 1978번 소수 찾기

안경말이 2022. 10. 22. 05:17

소수란 1과 자기 자신만을 인수로 가지는 수를 의미한다. 

소수 문제 풀이의 방법으로 에라토스테네스의 체를 첫번째로 떠올렸고, 두번째는 다음과 같은 로직을 떠올렸다.

 

1. 나눠 떨어지는 값이 0이 되면 

2. 나누는 수(j)가 1 또는 자기 자신인지 확인하고

3. 맞으면 cnt를 증가, 아니라면 j for문을 빠져나와 i for문의 다음을 실행한다.

여기서 cnt는중간에 break로 나오게 되었을 때는 소수가 아니므로 rest에 저장되지 못하게 하는 역할을 한다. 

 

위와 같은 로직에 따라 다음의 코드가 나온다. 

#include <iostream>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int a, b;
    int cnt = 0;
    int rest = 0;
    cin >> a;
    for (int i = 0; i < a; i++) {
        cnt = 0;
        cin >> b;
        if (b == 1)continue;

        for (int j = 1; j <= b; j++) {

            if (b % j == 0) {
                if (j == 1 || j == b) {
                    cnt++;
                    continue;
                }
                else break;
            }

        }
        if (cnt == 2)rest++;
    }
    cout << rest;
}

 

'Coding Test > Baekjoon' 카테고리의 다른 글

[25304 c++] 백준 영수증  (2) 2022.10.26
[8393 c++] 백준 합  (1) 2022.10.26
[10818 c++] 백준 10818번 최소, 최대  (2) 2022.10.23
Comments