코테/백준

1978번 소수 찾기

jhss9747 2025. 2. 7. 14:51

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

문제

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

입력

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

 

풀이

주어진 수 N개 중 소수를 찾으면 되는 문제이기에 나는 이렇게 풀었다.

  1. N을 입력받아 반복문으로 입력을 받는다.
  2. 입력 받은 수 m 의 값이 1보다 같거나 작으면  continue 한다.
  3. 약수가 있는지 검사하고 약수가 존재하면 sum+1을 한다.
  4. 소수는 약수가 1이고, 아니면 1 이상의 값을 가진다.
  5. 약수가 1인 값만 count한다.
  6. 결과를 출력한다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m, count = 0;
        int sum;

        for (int i = 0; i < n; i++) {
            m = sc.nextInt();

            if(m <= 1) continue;

            sum = 0;
            for (int j = 1; j <= m/2; j++) {
                if(m%j == 0){
                    sum += j;
                }
            }
            if(sum == 1) count++;
        }
        System.out.println(count);
    }
}