-
[백준] 1978. 소수 찾기PS/Java 2022. 3. 30.
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1
4 1 3 5 7
예제 출력 1
3
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static boolean[] arr = new boolean[1001]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int cnt = 0; Arrays.fill(arr, true); arr[1] = false; primeArr(); StringTokenizer st = new StringTokenizer(br.readLine()); for(int i = 0; i < n; i++) { int k = Integer.parseInt(st.nextToken()); if(arr[k]) { cnt++; } } System.out.println(cnt); } public static void primeArr() { for(int i = 4; i <= 1000; i++) { for(int j = 2; j < i; j++) { if(i % j == 0) { arr[i] = false; break; } } } } }
에라토스테네스의 체 알고리즘을 이용하여 정수의 index가 소수인지 아닌지 판정하는 boolean 배열을 만든다
1은 소수가 아니고 2, 3은 소수이므로 초기 세팅을 한 다음 각 숫자별로 반복문을 돌아 자신을 제외한 배수가 되는 수들을 전부 소수가 아니라고 판정하면 결과적으로는 소수만 남게 된다.
'PS > Java' 카테고리의 다른 글
[백준] 7576. 토마토(2차원) (0) 2022.03.30 [백준] 1026. 보물 (0) 2022.03.30 [백준] 1316. 그룹 단어 체커 (0) 2022.03.30 [백준] 12101. 1, 2, 3 더하기 (0) 2022.03.30 [백준] 2607. 비슷한 단어 (0) 2022.03.30