문제 출처: https://www.acmicpc.net/problem/1978
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.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(reader.readLine()); String[] arr = reader.readLine().split(" "); int result = 0; for(int i=0 ; i<N ; i++){ int num = Integer.parseInt(arr[i]); // 자연수 num의 소수 판별 // 기본 원리:2부터 num-1의 수로 나눌 때, 나눠지는 수가 있으면 소수가 아님 // 더 나아가서: 2부터 sqrt(num)의 수로 나눌 때, 나눠지는 수가 있으면 소수가 아님 // -> '나누는 수'와 '몫' 중 하나는 반드시 sqrt(num)이하이기 때문 if(num == 1) continue; boolean isPrime = true; for(int j=2; j<=(int)Math.sqrt(num) ; j++){ if(num%j == 0){ isPrime = false; break; } } if(isPrime) result++; } System.out.println(result); } } | cs |
'Algorithm' 카테고리의 다른 글
백준 1929번: 소수 구하기 (0) | 2018.10.21 |
---|---|
백준 2581번: 소수 (0) | 2018.10.21 |
백준 1181번: 단어 정렬 (0) | 2018.10.20 |
백준 1427번: 소트인사이드 (0) | 2018.10.20 |
백준 2108번: 통계학 (1) | 2018.10.20 |