알고리즘/수학
[백준-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 == 1) return false; // 2 ~ N - 1 까지 한번이라도 나눠지면 그 수는 소수가 아니다. for(int i = 2; i < num; i++) { if(num%i == 0) return false; } return true; } } | cs |