알고리즘/수학

[백준-1978]-[수학-소수]-소수 찾기 (java)

팡스 2018. 11. 27. 12:33

문제링크 : https://www.acmicpc.net/problem/1978




이 문제는 입력받은 수 중에서 소수가 몇개 존재하는지 출력하는 문제이다.


먼저 소수는 1을 제외하고 1과 본인으로만 나눠질 수 있는 수를 말한다. 


2부터 입력받은 수 N-1 까지 반복을 돌면서 나눈 나머지 값이 한번이라도 0이 된다면 그 수는 소수가 아니라는 소스를 만들면 된다.


이 문제에서 해줘야 하는 예외 처리는 1은 소수가 아니기 때문에 1을 입력 받으면 소수가 아니라고 판단하면 되겠다.



소스


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = null;
        int size = Integer.parseInt(br.readLine());
        
        st = new StringTokenizer(br.readLine());
        
        int primeCnt = 0;
        for(int i=0; i < size; i++) {
            int num = Integer.parseInt(st.nextToken());
            if(isPrimeNumber(num)) primeCnt++;
        }
        System.out.println(primeCnt);
    }
    public static boolean isPrimeNumber(int num) {
        // 1은 소수가 아니다
        if(num == 1return false;
        
        // 2 ~ N - 1 까지 한번이라도 나눠지면 그 수는 소수가 아니다.
        for(int i = 2; i < num; i++) {
            if(num%i == 0return false;
        }
        return true;
    }
 
}
 
cs