Week 1 (수학) - 문제 1978번 (소수 찾기)

2023. 6. 29. 16:23백준 문제와 소스 코드

문제:

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력:

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

 

출력:

주어진 수들 중 소수의 개수를 출력한다.

 

예제 입력1:

예제 출력1:

 

코드:

#include<iostream>

using namespace std;

int main()
{
    int count,count2;              //받을 정수의 개수를 저장할 변수와 소수가 아닌 것의 개수를 저장할 변수 선언
    count2 = 0;                    //count2 값을 0으로 초기화
    cin >> count;                  //받을 정수의 개수 초기화
    int* a1 = new int[count];   //정수들을 받을 동적 배열 a1 생성생성

    for (int i=0; i<count; i++)    //i가 0부터 count-1까지 반복 
    {
        cin >> a1[i];              //a1배열의 i자리에 초기화
        if (a1[i] == 1)            //안의 내용이 1이라면 count2 1증가
        {
            count2++;
            continue;              //for문 뒷내용 무시하고 다시 실행
        }
        for (int div = 2; div < a1[i]; div++)     //div가 2부터 안의 내용물-1까지 반복
        {
            if (a1[i] % div == 0)              //div가 안의 내용물을 나눠 나머지가 0이라면
            {
                count2++;                   //count2 1증가
                break;                      //뒤는 더 나눠볼 필요가 없으므로 바로 위의 for문 탈출
            }
        }
    }
    count2 = count - count2;        //count2는 소수가 아닌 것의 개수이므로 전체 개수에서 빼줘야함

    cout << count2;         //count2 출력

    return 0;
}

설명:

주석 참고