코딩 테스트/백준

백준 - [단계별로 풀어보기 약수, 배수와 소수 1] 1978 소수 찾기

devrabbit22 2026. 3. 27. 17:18

이번 문제는 입력된 값들 중에서 소수의 개수를 찾는 문제이다.
소수는 1을 제외하고, 1과 자기 자신만을 약수로 가지는 수이므로 단순히 나머지가 0인지 확인하는 것만으로는 판별할 수 없다. 입력받은 수보다 작은 값들을 이용해 추가적인 약수가 존재하는지 확인해야 한다.
따라서 2부터 해당 수보다 작은 수까지 반복문을 돌며 나누어 떨어지는 수가 있는지 검사하고, 이러한 값이 없다면 소수로 판단할 수 있다.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    internal class math1
    {
        static void Main(string[] args)
        {
            //백준 1978 소수 찾기
            int N = int.Parse(Console.ReadLine());
            string[] input = Console.ReadLine().Split();
            int count = 0;

            for (int i = 0; i < input.Length; i++)
            {
                int inputData = int.Parse(input[i]);

                if (inputData == 1) continue; // 1은 소수가 아니므로 건너뛴다.

                // 소수 판단 변수
                bool isPrime = true;

                // 2부터 inputData-1까지 나누어 떨어지는 수가 있는지 확인
                for (int j = 2; j < inputData; j++)
                {
                    if (inputData % j == 0)
                    {
                        isPrime = false; 
                        break; // 더 이상 검사할 필요 없으므로 반복문 종료
                    }
                }

                // 끝까지 나누어 떨어지는 수가 없을 경우
                if (isPrime) 
                    count++; // 소수 개수 증가
            }
            Console.WriteLine(count);
        }
    }
}

출력 결과