https://www.acmicpc.net/problem/1978
접근 방법
소수 찾는 로직은 학교 수업 시간에 자주 다루는 내용이기 때문에 크게 어렵지 않았지만
에라토스테네스의 체라는 알고리즘을 이용하여 구현하였다.
에라토스테네스의 체는 가장 작은 수부터 차례로 탐색하여 소수를 찾되, 찾은 소수에 대한 배수를 미리 제거하는 방법이다.
자세한 내용은 이곳을 참고하였다.
최종 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
int[] numbers = new int[N];
int count = 0;
for (int i = 0; i < N; i++) {
numbers[i] = scanner.nextInt();
}
boolean[] isNotPrime = new boolean[10001];
isNotPrime[0] = true;
isNotPrime[1] = true;
for (int i = 2; i < isNotPrime.length; i++) {
int number = i * 2;
while (number <= 10000) {
isNotPrime[number] = true;
number += i;
}
}
for (int i = 0; i < N; i++) {
int number = numbers[i];
if (!isNotPrime[number]) {
count++;
}
}
System.out.println(count);
}
}
반응형
'Tech > Problem Solving' 카테고리의 다른 글
[백준 14889] 스타트와 링크 (Java) (0) | 2020.02.07 |
---|---|
[백준 2609] 최대공약수와 최대공배수 (Java) (0) | 2020.02.07 |
[백준 9663] N-Queen (Java) (0) | 2020.02.05 |
[백준 1182] 부분수열의 합 (Java) (0) | 2020.01.30 |
[백준 5430] AC (Java) (0) | 2020.01.27 |