Algorithm
[백준 1978번] 자바/소수 찾기
도도고영
2022. 9. 20. 14:17
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.StringTokenizer;
public class BJ1978 {
public static void main(String[] args) throws NumberFormatException, IOException {
boolean isPrimeNum[] = new boolean[1001];
for (int i = 0; i < isPrimeNum.length; i++) {
isPrimeNum[i] = true;
}
isPrimeNum[0] = isPrimeNum[1] = false;
for (int i = 0; i < isPrimeNum.length; i++) {
if(isPrimeNum[i]) {
for (int j = 2; i * j < 1001; j++) {
isPrimeNum[i * j] = false;
}
}
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int cnt = 0;
for (int i = 0; i < n; i++) {
if(isPrimeNum[Integer.parseInt(st.nextToken())]) {
cnt++;
}
}
System.out.println(cnt);
}
}