https://www.acmicpc.net/problem/1978
이전 소수 관련 문제 풀이와 비슷하다. 1000이하의 자연수에 대해 판별하는 것이기 때문에 1부터 1000까지 소수인지 아닌지를 미리 구해주고 prime이라는 boolean 배열에 담아준다. 2부터 1000까지 배수인 것을 소수가 아니라고 표시한다. 아래 코드에서는 prime[i]가 false이면 i는 소수이다.
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int N;
int a, cnt=0;
boolean[] prime = new boolean[1001];
prime[1] = true;
for(int i=2; i<1001; i++) {
if(prime[i])
continue;
for(int j=2; i*j<1001; j++)
prime[i*j]=true;
}
N=sc.nextInt();
for(int i=0; i<N; i++) {
a=sc.nextInt();
if(!prime[a])
cnt++;
}
System.out.println(cnt);
}
}
'프로그래밍 > 백준 문제풀이' 카테고리의 다른 글
백준 2309: 일곱 난쟁이[JAVA] / 투포인터 (0) | 2022.10.03 |
---|---|
C로 푼 문제들 (0) | 2022.09.07 |
백준 17425: 약수의 합(JAVA) (0) | 2022.08.18 |
백준 17427: 약수의 합 2 (0) | 2022.08.18 |
백준 1037: 약수 (0) | 2022.08.12 |